1、授权获取微信个人信息
wx.getUserProfile({
desc: '展示用户信息',
success: (res) => {
this.setData({
nickName: res.userInfo.nickName,
avatarUrl: res.userInfo.avatarUrl
})
},
fail: res => {
wx.showToast({
title: '您已拒绝授权,请重新点击并授权',
icon:'none'
})
}
})
2、调用wx.login()
获取临时登录凭证code
wx.login({
success: res => {
this.setData({
jsCode: res.code
})
}
})
3、用code调用接口换取用户唯一标识openId、用户在微信开放平台账号下的唯一标识unionId和会话密钥session_key
(1)前端获取
wx.request({
//微信开发者工具勾选-不校验合法域名
url: 'https://api.weixin.qq.com/sns/jscode2session?appid=' + appId + '&secret=' + secret + '&js_code=' + code + '&grant_type=authorization_code',
data:{},
header:{
'content-type':'json'
},
success:function(res) {
console.log(res);
}
})
注意点
:正常开发中不会通过这种方法获取,会通过后台获取调用微信公众平台接口获取openid,为了保护一些敏感信息如appid,secret密钥不被泄露。前端可以用来在测试中使用从而达到效果。
(2)调用后台接口获取
getOpenId({jsCode:this.data.jsCode}).then(res => {
if (res.data.code === 1) {
this.setData({
openid: res.data.data.openid,
sessionKey: res.data.data.sessionKey,
unionid: res.data.data.unionid
})
}
})
4、授权获取手机号
(1)使用button按钮触发授权弹窗
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">获取手机号码</button>
getPhoneNumber(e){
console.log(e.detail.iv);//加密算法的初始向量
console.log(e.detail.encryptedData);//完整用户信息的加密数据
console.log(e.detail.code);//手机号获取凭证
}
(2)通过参数encryptedData
,iv
,sessionKey
或者是code
,sessionKey
请求后端接口,后端进行解密然后返回用户手机号注意
:如果通过code
来获取,用微信开发者工具测试的时候,可能会显示不出code
,这是调试基础库的原因,在真机调试上不会出现问题。本地调试的时候将调式基础库修改为2.22.1版本即可。
5、绑定微信
只需授权然后使用获取的openid
,unionid
,sessionKey
调用后端接口
wx.getUserProfile({
desc: '展示用户信息',
success: (res) => {
let data = {}
data.openid = this.data.openid
data.unionid = this.data.unionid
data.sessionKey = this.data.sessionKey
miniBind(data).then(res => {
if (res.data.code === 1) {
wx.showToast({
title: '授权成功!'
})
} else {
wx.showToast({
icon: "none",
title: res.data.msg,
})
}
})
}
})