创建getPhoneNumber按钮
先写一个button按钮,open-type 设为 getPhoneNumber
<button open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">唤起授权手机号</button>
wx.login 接口,获取code
uni.login({
success: (res) => {
if (res.code) { //微信登录成功 已拿到code
// ...doSomething
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
用 code换取 session 和 openId
onload(){
uni.login({
success: (res) => {
if (res.code) { //微信登录成功 已拿到code
this.jsCode=res.code //保存获取到的code
uni.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
method:'GET',
data: {
appid: 'wx********', //你的小程序的APPID
secret: 'xxxxxxxxxx', //你的小程序的secret,
code: res.code //wx.login 登录成功后的code
},
success: (cts) => {
console.log(cts, 'login');
// 换取成功后 暂存这些数据 留作后续操作
this.openid=cts.data.openid //openid 用户唯一标识
this.unionid=cts.data.unionid //unionid 开放平台唯一标识
this.session_key=cts.data.session_key //session_key 会话密钥
}
});
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
}
解密用户信息
(1) 安装 crypto-js
使用npm 安装 crypto-js
安装命令:
npm install crypto-js
(2)下载 WXBizDataCrypt.js 文件
WXBizDataCrypt.js微信官方下载地址
打开Node文件夹,把 WXBizDataCrypt.js 文件放入你的项目中。(比如我是放在我的utils文件夹下)
在需要解密的页面引用该文件
import WXBizDataCrypt from "@/utils/WXBizDataCrypt.js"; //请以你的实际地址为准
按钮点击触发事件 onGetPhoneNumber
getPhoneNumber(e) {
console.log(e, 'eeeeeee');
if (e.detail.errMsg == 'getPhoneNumber:ok') {
//允许授权
let pc = new WXBizDataCrypt('wx********', this.session_key);
//wxXXXXXXX为你的小程序APPID
let data = pc.decryptData(e.detail.encryptedData, e.detail.iv);
console.log(data); //data就是最终解密的用户信息
//后续操作。。。
} else {
//用户决绝授权或授权失败
console.log(e.detail.errMsg)
//拒绝授权后弹出一些提示
}
},