亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

微信小程序獲取用戶手機號碼詳細教程(前端+后端)

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

1.背景介紹

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

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

目前版本的微信小程序獲取用戶手機號碼的方式如下:

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

后端開發(fā)參考:

手機號快速填寫 | 微信開放文檔

步驟如下:

①利用手機號快速填寫的功能,將button組件 open-type 的值設置為 getPhoneNumber

②用戶點擊按鈕,彈出申請獲取用戶手機號的彈窗:

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

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

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

否則便會報錯:

2.前端代碼

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

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

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

代碼如下:

按鈕:

<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, //請求體中封裝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: "錯誤!",
          content: "網(wǎng)絡錯誤!",
          complete() {
          }
        })
      }
    })
  }
}

3.后端代碼

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

開發(fā)工具:idea

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

百度翻譯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來獲取用戶手機號
            String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + token.getString("access_token");

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

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

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

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

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

4.結(jié)果展示

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

5.補充:獲取用戶頭像

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

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

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

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

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

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

總結(jié) 

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

相關(guān)文章

最新評論