微信小程序开发之获取用户手机号码微信小程序开发之获取用户手机号码(php接口解密接口解密)
后边要做一个微信小程序,并要能获取用户微信绑定的手机号码。而小程序开发文档上边提供的获取手机号码的接口
(getPhoneNumber())返回的是密文,需要服务器端进行解密,但是官方提供的开发文档一如既往的乱,如果没有对小程序
开发文档有一个整体的了解,搞懂解密流程还是有点难的。这里把小程序从请求用户授权获取手机号码直至获取到手机号码明
文的整个流程串了起来,方便迅速了解,如下:
一一. 前端相关操作:前端相关操作:
1. 请求用户授权获取手机号码请求用户授权获取手机号码:
因为需要用户主动触发才能发起获取手机号接口,所以该功能不由 API 来调用,需用<button>组件的点击来触发,如下:
wxml:
<button wx:if="{{!phone}}" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber"> 获取手机号码</button>
js:
Page({
getPhoneNumber: function(e) {
if(e.detail.errMsg == "getPhoneNumber:fail user deny") return; //用户允许授权
console.log("lv", e.detail.iv); //包括敏感数据在内的完整用户信息的加密数据,需要解密
console.log(e.detail.encryptedData); //加密算法的初始向量,解密需要用到
......
}
})
2. 访问小程序登录接口访问小程序登录接口:
小程序调用wx.login()获取临时登录凭证code,并传到开发者服务器。
Page({
getPhoneNumber: function(e) {
console.log(e.detail.errMsg)
console.log(e.detail.iv) //包括敏感数据在内的完整用户信息的加密数据,需要解密
console.log(e.detail.encryptedData) //加密算法的初始向量,解密需要用到
wx.login({
success: res => {
if(res.code){
console.log(res.code)
}
}
})
}
})
3. 访问腾讯服务器的登录凭证校验接口访问腾讯服务器的登录凭证校验接口:
注:官方推荐放到服务器端进行,这里为了方便,就放在前端请求了。
这里要注意传入参数:
appid 小程序唯一标识
secret 小程序的 app secret
js_code 登录时获取的 code
grant_type
填写为
authorization_code
//2. 访问登录凭证校验接口获取session_key
wx.request({
url: "https://api.weixin.qq.com/sns/jscode2session",
data: {
'appid': "xxxxxxxx",
'secret': "xxxxxxxx",
'js_code': res.code,
'grant_type': "authorization_code"
},
method: 'GET', // OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
header: {
'content-type': 'application/json'
评论0