最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

微信小程序獲取用戶手機(jī)號(hào)碼詳細(xì)教程(前端+后端)

 更新時(shí)間:2024年02月18日 11:46:26   作者:THE?WHY  
在我們開發(fā)微信小程序時(shí),獲取用戶手機(jī)號(hào)碼是常見的需求之一,這篇文章主要給大家介紹了關(guān)于微信小程序獲取用戶手機(jī)號(hào)碼的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下

1.背景介紹

在開發(fā)一款微信小程序時(shí),需要用戶進(jìn)行微信登錄,獲取用戶的手機(jī)號(hào)碼來作為用戶的唯一標(biāo)識(shí)(userId),于是探索獲取用戶手機(jī)號(hào)碼的方式;

(當(dāng)然,通過wx.login來獲取code,進(jìn)而換取用戶的openid也是可以的)

目前版本的微信小程序獲取用戶手機(jī)號(hào)碼的方式如下:

前端開發(fā)參考:手機(jī)號(hào)快速填寫組件 | 微信開放文檔

后端開發(fā)參考:

手機(jī)號(hào)快速填寫 | 微信開放文檔

步驟如下:

①利用手機(jī)號(hào)快速填寫的功能,將button組件 open-type 的值設(shè)置為 getPhoneNumber

②用戶點(diǎn)擊按鈕,彈出申請(qǐng)獲取用戶手機(jī)號(hào)的彈窗:

③如果用戶點(diǎn)擊允許,則可以通過bindgetphonenumber事件回調(diào)獲取到動(dòng)態(tài)令牌code(注意這里的code和wx.login的code不一樣,而且獲取用戶手機(jī)號(hào)碼不需要提前調(diào)用wx.login獲取code了)

④把code傳到開發(fā)者后臺(tái),并在開發(fā)者后臺(tái)調(diào)用微信后臺(tái)提供的 phonenumber.getPhoneNumber 接口,消費(fèi)code來換取用戶手機(jī)號(hào)

注意一點(diǎn),獲取手機(jī)號(hào)的功能好像只允許經(jīng)過認(rèn)證的小程序使用,如果未認(rèn)證只能使用測試號(hào)才可以

否則便會(huì)報(bào)錯(cuò):

2.前端代碼

開發(fā)環(huán)境:Uniapp框架

微信小程序調(diào)試基礎(chǔ)庫的版本:2.32.1

基本思路:通過按鈕綁定監(jiān)聽事件,獲取用戶授權(quán),得到code,傳到后端換取用戶手機(jī)號(hào):

代碼如下:

按鈕:

<button open-type="getPhoneNumber" class="login_button" @getphonenumber="login" v-show="!logged">登錄</button>

login函數(shù):

//登錄按鈕
login(e) {
  console.log(e)
  var detail = e.detail
  if (detail.errMsg == "getPhoneNumber:ok") {
    console.log("用戶同意授權(quán)")
    var code = detail.code
    uni.request({
      url: "http://localhost:8081/getPhoneNumber", //調(diào)用接口
      method: 'POST',
      header: {
        'content-type': 'application/json'
      },
      data: {
        code: code, //請(qǐng)求體中封裝code
      },
      success(e) {
        console.log(e)
        var userId = e.data.phone_info.purePhoneNumber;
        uni.setStorage({
          key: "userId",
          data: userId,
          success() {
            uni.switchTab({
              url: "../../pages/homePage/homepage"
            })
          }
        })
      },
      fail(e) {
        uni.showModal({
          title: "錯(cuò)誤!",
          content: "網(wǎng)絡(luò)錯(cuò)誤!",
          complete() {
          }
        })
      }
    })
  }
}

3.后端代碼

開發(fā)環(huán)境:springboot

開發(fā)工具:idea

如果對(duì)于idea創(chuàng)建springboot項(xiàng)目有任何問題,可以參考的這一篇文章的后端代碼部分:

百度翻譯API使用教程(前端+后端)

代碼展示如下:

@RestController
    public class PhoneNumberController {

        @PostMapping("/getPhoneNumber")
        public Object getPhoneNumber(@RequestBody Map<String,Object> data)
        {
            //通過appid和secret來獲取token
            //WXContent.APPID是自定義的全局變量
            String tokenUrl = String.format("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", WXContent.APPID, WXContent.APPSECRET);
            JSONObject token = JSON.parseObject(HttpUtil.get(tokenUrl));

            //通過token和code來獲取用戶手機(jī)號(hào)
            String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + token.getString("access_token");

            //封裝請(qǐng)求體
            Map<String, String> paramMap = new HashMap<>();
            paramMap.put("code", data.get("code").toString());

            //封裝請(qǐng)求頭
            HttpHeaders headers = new HttpHeaders();
            headers.setContentType(MediaType.APPLICATION_JSON);

            HttpEntity<Map<String, String>> httpEntity = new HttpEntity<>(paramMap,headers);

            //通過RestTemplate發(fā)送請(qǐng)求,獲取到用戶手機(jī)號(hào)碼
            RestTemplate restTemplate = new RestTemplate();
            ResponseEntity<Object> response = restTemplate.postForEntity(url, httpEntity, Object.class);

            //返回到前端展示
            return response.getBody();
        }
    }

4.結(jié)果展示

在我的前端代碼中有緩存用戶id的功能,如果成功登錄,即可在緩存中查看到用戶id,如下:

5.補(bǔ)充:獲取用戶頭像

微信小程序獲取用戶信息的功能好像挺離譜的,一直改來改去,目前大多是通過點(diǎn)擊頭像申請(qǐng)獲取微信頭像來實(shí)現(xiàn)

<button class="mine_avatar_wrapper" open-type="chooseAvatar" @chooseavatar="onChooseAvatar">
  <image class="mine_image" :src="avatarUrl"></image>
</button>

通過open-type綁定選擇用戶頭像的功能,然后點(diǎn)擊按鈕即可彈出彈窗:

而onChooseAvatar函數(shù)則是獲取到微信頭像后渲染到頁面上

onChooseAvatar(e)
	{
			this.avatarUrl = e.detail.avatarUrl
			uni.setStorageSync('avatarUrl',this.avatarUrl)
	},

這里選擇使用用戶頭像即可修改用戶頭像為微信頭像:

總結(jié) 

到此這篇關(guān)于微信小程序獲取用戶手機(jī)號(hào)碼的文章就介紹到這了,更多相關(guān)微信小程序獲取用戶手機(jī)號(hào)碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

陆河县| 沽源县| 秀山| 黄梅县| 平罗县| 芦溪县| 绥化市| 彭泽县| 综艺| 奈曼旗| 双江| 疏附县| 拜泉县| 锡林浩特市| 新乡市| 普兰县| 柘荣县| 尉犁县| 新巴尔虎右旗| 潮州市| 万宁市| 友谊县| 溆浦县| 巴青县| 长乐市| 广河县| 绩溪县| 昌乐县| 友谊县| 石台县| 潍坊市| 中山市| 三亚市| 广汉市| 三都| 莫力| 赣榆县| 防城港市| 娄烦县| 泗水县| 汉寿县|