目标效果:
1、<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber" >一键登录</button>
2、 getPhoneNumber拿到的是加密的手机号 如果想解密需要后端提供接口哦 下面是请求后端接口的函数
/* 获取手机号 */
async getPhoneNumber(e) { // 在bindgetphonenumber回调中获取code动态令牌
const openid = await getOpenid();
const key = await getUserInfo();
this.openid = key.openid
const session_key = key.session_key
//需要给后端传三个值 其中除了session_key都可以在getPhoneNumber返回的e中拿到session_key也需要后端先提供
this.$request.getAction('/encodeUserInfo', {
encryptedData: e.detail.encryptedData,
iv: e.detail.iv,
sessionKey: key.session_key
}).then((res) => {
if (res.phoneNumber) {
this.mobile = res.phoneNumber
this.loginFn()//再请求登录函数
} else {
uni.showToast({
icon: 'error',
title: '未获取到手机号,请重新操作!',
})
}
// uni.showToast({
// icon: 'success',
// title: '修改成功',
// })
})
.catch((err) => {
uni.showToast({
icon: 'error',
title: err.msg,
})
})
},
3、loginFn为后端的登录接口 一般传手机号和openid 就可以
大功告成! 如果需要后端的代码 请参考微信小程序如何获取用户手机号 ?-腾讯云开发者社区-腾讯云