微信小程序登錄獲取手機號


一,發送請求攜帶 code 到后台換取 openid

var that = this;
    wx.login({
      success(res) {
        console.log(res);
        var code = res.code
        wx.request({
          url: 'http://localhost/index/users/code2seesion',
          method: "post",
          data: {
            code
          },
          success: function (res) {
            console.log(res.data.openid);
            that.setData(res.data);
          }
        })
      }
    })

1、第一步打印出 wx.login 成功回調后的res console.log(res),下面是打印出的內容

2、提取 code
var code = res.code;

3、發送 post 請求到后台換取 openid 攜帶參數 data:{code} 打印成功回調console.log(res),下面是打印出的部分內容:

可以清楚的看到session_key、openid、errMsg;這些參數在接下來的操作中有着重要的作用;

4、保存data內容 里面包含 openid 和 session_key :that.setData(res.data);

 

二、以上操作完成並將參數保存下來之后,就可以開始獲取手機號了:
~獲取手機號是有特殊按鈕類型

<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">獲取手機號</button>
getPhoneNumber: function (e) {
    var that = this;
    console.log(e.detail.errMsg == "getPhoneNumber:ok");
    if (e.detail.errMsg == "getPhoneNumber:ok") {
      wx.request({
        url: 'http://localhost/index/users/decodePhone',
        data: {
          encryptedData: e.detail.encryptedData,
          iv: e.detail.iv,
          sessionKey: that.data.session_key,
          uid: "",
        },
        method: "post",
        success: function (res) {
          console.log(res);
        }
      })
    }
  },

 

1、可以打印出 自己是否允許授權 console.log(e.detail.errMsg == "getPhoneNumber:ok");
如果允許:true 如果拒絕:false
 
2、判斷用戶是點擊允許還是拒絕 這里的請求 需求攜帶四個必備參數 ,可以打印出e.detail ~console.log(e.detail)
如果為 true 就開始 post 請求后台 攜帶上 encryptedData 、iv 、sessionKey 、uid
 
3、打印出成功的回調函數 success: function (res) {console.log(res);} 可以看到里面有了~phoneNumber 手機號了
 
getPhoneNumber(e) {
      wx.showLoading({
        title: '加載中',
        mask: true
      });
      var _this = this;
      var code = '';
      var openId = '';
      wx.login({
        success(res) {
          console.log(res);
          code = res.code;
          api.expiry.login({ code: res.code }).then(data => {
            console.log('ffff');
            console.log(data);
            openId = data.openId;
            if (e.$wx.detail.errMsg == 'getPhoneNumber:ok') {
              let obj = {
                // code: wx.getStorageSync('code'),
                code: code,
                iv: e.$wx.detail.iv,
                encryptedData: e.$wx.detail.encryptedData,
                // openId: this.$app.$options.globalData.openid
                openId: openId
              };
              api.expiry.getPhoneNumer(obj).then(data => {
                console.log('phone number', data);
                _this.phone = data.phone;
                wx.hideLoading();
              });
            } else if (e.$wx.detail.errMsg == 'getPhoneNumber:fail user deny') {
              wx.showToast({
                title: '手機號碼獲取失敗,請手動輸入',
                icon: 'none',
                duration: 3000
              });
              return;
            }
          });
        }
      });
    },

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM