大家好我是咕噜美乐蒂,很高兴又和大家见面了!
在微信小程序中,针对微信基础库新旧不同版本,获取用户手机号的方法略有不同。我将分别介绍新旧版本的获取用户手机号方法:
新版本(基础库 2.10.0 及以上)
需要用户授权
步骤:用户首次点击获取手机号的按钮时,系统会弹出授权窗口,用户需要确认授权才能获取手机号。
代码示例:
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);
}
}
});解密手机号
代码示例:
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)- 官方接口获取手机号
代码示例:
javascript
wx.getPhoneNumber({
success: (res) => {
console.log(res.detail.encryptedData); // 获取加密信息
console.log(res.detail.iv); // 获取加密算法的初始向量
}
}); - 解密手机号
代码示例:
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,再通过解密算法获取手机号。
后端服务器需配合前端进行解密,具体解密算法可参考微信官方文档提供的示例代码。
以上是针对微信小程序中新旧版本获取用户手机号的方法,具体实现方式可能根据项目需求和后端逻辑有所不同。如果您有任何进一步的问题或需要更多帮助,请随时告诉我。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。