第一步:小程序wxml文件中增加授权标签
-
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号码</button>
第二歩
-
wx.login({
success:(res) =>{
if (res.code) {
let appid = 'xxxxxxx'
let secret ='xxxxxxxxx'
let js_code = res.code
//发起网络请求
wx.request({
method: 'GET',
header: { 'content-type': 'application/json' },
url: "http://localhost:8080/platform-admin/api/login/getOpenId",
data: {
js_code: js_code,
appid,
secret,
grant_type: 'authorization_code'
},
success:(res2)=>{
console.log("xxx", JSON.stringify(res2.data));
this.setData({
wxCode: JSON.stringify(res2.data)
});
}
});
} else {
console.log('获取用户登录态失败!' + res.errMsg)
}
}
});
打印结果:
第三歩:
//测试获取手机号码
getPhoneNumber: function (e) {
console.log(e);
// 参数e是绑定的授权方法自动传入过来的, 主要是为了拿到vi和encryptedData值从后台换取用户联系方式
if ("getPhoneNumber:ok" != e.detail.errMsg) {
wx.showToast({
icon: 'none',
title: '快捷登陆失败'
})
return;
}
var iv = e.detail.iv;
var encryptedData = e.detail.encryptedData;
// this.data.wxCode, 定义wxCode变量,并在onShow()方法中调用小程序login方法获取code值赋予this.data.wxCode
var code = this.data.wxCode;
var _this = this;
//调用后台接口获取用户手机号码
//发起网络请求
wx.request({
method: 'POST',
header: { 'content-type': 'application/x-www-form-urlencoded' },
// header: { 'content-type': 'application/json;charset=UTF-8'},
url: "http://localhost:8080/platform-admin/api/phone/decode/wxapp/phone",
data: {
encrypted: encryptedData,
iv: iv,
code: code
},
success: function (data) {
// 获取到的手机号码
// var phone = data.data.data
console.log("phone",data.data.data)
},
fail: function (msg) {
}
});
},
打印结果:
注意:下面图片需要手机扫码后授权 ,授权后才可以获取手机号码