大家好我是咕噜美乐蒂,很高兴又和大家见面了!
在微信小程序中,针对微信基础库新旧不同版本,获取用户手机号的方法略有不同。我将分别介绍新旧版本的获取用户手机号方法:
新版本(基础库 2.10.0 及以上)
1. 需要用户授权
步骤:用户首次点击获取手机号的按钮时,系统会弹出授权窗口,用户需要确认授权才能获取手机号。
代码示例:
javascript
wx.login({
success: (res) => {
if (res.code) {
wx.request({
url: 'https://api.weixin.qq.com/sns/jscode2session',
data: {
js_code: res.code,
grant_type: 'authorization_code'
},
success: (res) => {
let openid = res.data.openid;
let sessionKey = res.data.session_key;
// 这里可以根据后台返回的数据再进行相应的操作
}
});
} else {
console.log('登录失败!' + res.errMsg);
}
}
});
2. 解密手机号
代码示例:
javascript
wx.getUserInfo({
success: (res) => {
wx.request({
url: 'https://yourdomain.com/decryptPhone',
method: 'POST',
data: {
encryptedData: res.encryptedData,
iv: res.iv,
sessionKey: sessionKey // 上一步获取的 sessionKey
},
success: (res) => {
console.log(res.data.phoneNumber);
}
});
}
});
旧版本(基础库低于 2.10.0)
1. 官方接口获取手机号
代码示例:
javascript
wx.getPhoneNumber({
success: (res) => {
console.log(res.detail.encryptedData); // 获取加密信息
console.log(res.detail.iv); // 获取加密算法的初始向量
}
});
2. 解密手机号
代码示例:
javascript
wx.request({
url: 'https://yourdomain.com/decryptPhone',
method: 'POST',
data: {
encryptedData: res.detail.encryptedData,
iv: res.detail.iv,
sessionKey: sessionKey // 旧版本需提前获取 sessionKey
},
success: (res) => {
console.log(res.data.phoneNumber);
}
});
注意事项
在获取用户手机号之前,需要先获取用户的登录凭证 code,再通过解密算法获取手机号。
后端服务器需配合前端进行解密,具体解密算法可参考微信官方文档提供的示例代码。
以上是针对微信小程序中新旧版本获取用户手机号的方法,具体实现方式可能根据项目需求和后端逻辑有所不同。如果您有任何进一步的问题或需要更多帮助,请随时告诉我。