1、获取手机号
<button type="primary" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">微信快速登录</button>
getPhoneNumber(event) {
let encryptedData = event.detail.encryptedData
let iv = event.detail.iv
var that = this;
wx.checkSession({
success() {
//session_key 未过期,并且在本生命周期一直有效
},
fail() {
// session_key 已经失效,需要重新执行登录流程
wx.login({
success: res => {
code = res.code;
}
})
},
complete() {
// 获取 openid
const appID = '';
const secret = '';
const js_code = code;
const grant_type = 'authorization_code';
var header = {
'Content-Type': 'application/json'
};
const params = {appId:appID,secret:secret,code:js_code,grantType:grant_type};
console.log(params);
// 此接口通过后端调用
$http.postRequest('/getUserInfo',header,params,(response)=>{
if (response.code == 200) {
// 获取 openid.
// WXBizDataCrypt. 微信提供的解密文件 进行解密
let pc = new WXBizDataCrypt(appID,response.rows[0].session_key);
let data = pc.decryptData(encryptedData, iv);
// data.phoneNumber 获取手机号
}
},(res)=>{
});
}
})
},
项目中如果出现WXBizDataCrypt解析失败的情况,解决办法如下:
// 提前调用 wx.login方法 获取code
onLoad() {
wx.login({
success: res => {
code = res.code;
}
});
}
2、获取用户信息
此方法页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用
wx.getUserProfile
<button bindtap="getUserProfile"> 获取用户信息 </button>
getUserProfile(e) {
// 推荐使用wx.getUserProfile获取用户信息,开发者每次通过该接口获取用户个人信息均需用户确认
// 开发者妥善保管用户快速填写的头像昵称,避免重复弹窗
wx.getUserProfile({
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
this.setData({
userInfo: res.userInfo,
hasUserInfo: true
})
}
})
},
官方文档参考:
1、小程序登录流程
2、微信接口获取openid
3、解密获取openid和手机号
4、获取用户信息