微信小程序拿到登录用户手机号
时间: 2023-09-02 10:13:42 浏览: 125
微信小程序如何获取用户手机号
要获取微信小程序登录用户的手机号,需要先让用户授权手机号。具体步骤如下:
1. 在app.json中添加获取用户手机号的权限:
```json
{
"permission": {
"scope.userLocation": {
"desc": "你的位置信息将用于小程序定位"
},
"scope.userInfo": {
"desc": "你的基本信息将用于小程序登录"
},
"scope.phoneNumber": {
"desc": "你的手机号码将用于小程序登录"
}
}
}
```
2. 在登录成功后,调用`wx.login()`获取code,并使用`wx.request()`发送code到后台服务器,获取session_key和openid,代码如下:
```javascript
wx.login({
success: res => {
wx.request({
url: 'https://yourserver.com/login',
data: {
code: res.code
},
success: res => {
//获取session_key和openid
let session_key = res.data.session_key;
let openid = res.data.openid;
//保存session_key和openid
wx.setStorageSync('session_key', session_key);
wx.setStorageSync('openid', openid);
}
})
}
})
```
3. 在获取到session_key和openid后,调用`wx.getUserInfo()`获取用户信息,检查用户是否授权手机号,如果已授权,则可以使用`wx.request()`发送加密数据到后台服务器,进行解密并获取手机号,代码如下:
```javascript
wx.getUserInfo({
success: res => {
if (res.errMsg === 'getUserInfo:ok') {
//检查是否授权手机号
if (res.userInfo.phoneNumber) {
//已授权手机号,调用后台接口获取解密后的手机号
wx.request({
url: 'https://yourserver.com/decryptPhone',
method: 'POST',
data: {
session_key: wx.getStorageSync('session_key'),
encrypted_data: res.encryptedData,
iv: res.iv
},
success: res => {
//获取手机号成功
let phone = res.data.phoneNumber;
console.log(phone);
}
})
} else {
//未授权手机号,提示用户授权
wx.showModal({
title: '提示',
content: '请授权手机号',
showCancel: false
})
}
}
}
})
```
注意,解密手机号的过程需要在后台服务器完成,需要使用后台语言如Node.js或Java等,具体实现方式可以参考微信官方提供的解密算法文档。
阅读全文