uniapp授权获取手机号,在前端js对code进行解密,不走服务器,写出详细代码
时间: 2024-04-01 17:38:41 浏览: 91
验证手机号码的JS方法分享
首先需要了解uniapp授权获取手机号的流程,大致如下:
1. 用户点击授权按钮,小程序向用户弹出授权窗口,用户选择是否授权。
2. 如果用户授权,小程序会返回一个加密的手机号信息和一个code。
3. 开发者需要将code发送到开发者服务器,使用AppID和AppSecret等信息通过接口换取session_key和openid。
4. 开发者服务器使用session_key对加密的手机号信息进行解密,获取用户的手机号。
根据这个流程,我们可以在前端JS对code进行解密,不走服务器,具体代码如下:
```javascript
// 获取手机号的回调函数
getPhoneNumber(e) {
// 获取加密数据和code
const {encryptedData, iv, errMsg} = e.detail;
const {code} = wx.loginSync();
// 使用code解密session_key
const res = wx.requestSync({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
appid: 'your_appid',
secret: 'your_secret',
js_code: code,
grant_type: 'authorization_code'
}
});
// 解密手机号
const sessionKey = res.data.session_key;
const decipher = wx.createDecipheriv('aes-128-cbc', Buffer.from(sessionKey, 'base64'), Buffer.from(iv, 'base64'));
let decrypted = decipher.update(encryptedData, 'base64', 'utf8');
decrypted += decipher.final('utf8');
const phone = JSON.parse(decrypted).phoneNumber;
console.log(phone);
}
```
这里使用了微信小程序提供的API,将加密数据和code发送给服务器,获取session_key,然后使用session_key对加密数据进行解密,最终获取用户的手机号。
阅读全文