一、請(qǐng)求發(fā)送 攜帶 code 到后臺(tái)換取 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 成功回調(diào)后的res console.log(res),下面是打印出的內(nèi)容

2、提取 code
var code = res.code;
3、發(fā)送 post 請(qǐng)求到后臺(tái)換取 openid 攜帶參數(shù) data:{code} 打印成功回調(diào)console.log(res),下面是打印出的部分內(nèi)容:

可以清楚的看到session_key、openid、errMsg;這些參數(shù)在接下來(lái)的操作中有著重要的作用;
4、保存data內(nèi)容 里面包含 openid 和 session_key :that.setData(res.data);

二、以上操作完成并將參數(shù)保存下來(lái)之后,就可以開(kāi)始獲取手機(jī)號(hào)了:
~獲取手機(jī)號(hào)是有特殊按鈕類(lèi)型
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">獲取手機(jī)號(hào)</button>
類(lèi)型和點(diǎn)擊事件都是指定了
open-type="getPhoneNumber" "bindgetphonenumber="getPhoneNumber"
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、可以打印出 自己是否允許授權(quán) console.log(e.detail.errMsg == "getPhoneNumber:ok");

如果允許:true 如果拒絕:false
2、判斷用戶(hù)是點(diǎn)擊允許還是拒絕 這里的請(qǐng)求 需求攜帶四個(gè)必備參數(shù) ,可以打印出e.detail ~console.log(e.detail)

可以看到 encryptedData 、iv 接下來(lái)可以繼續(xù)了
if (e.detail.errMsg == "getPhoneNumber:ok")
如果為 true 就開(kāi)始 post 請(qǐng)求后臺(tái) 攜帶上 encryptedData 、iv 、sessionKey 、uid
data: {
encryptedData: e.detail.encryptedData,
iv: e.detail.iv,
sessionKey: that.data.session_key,
uid: "",
},
3、打印出成功的回調(diào)函數(shù) success: function (res) {console.log(res);} 可以看到里面有了~phoneNumber 手機(jī)號(hào)了
