微信授权登录这块,一开始我是研究半天,后来并没用用到,本来想前端获取openid和unionid的,但是后来选择了走后台获取了,但是也是研究半天,决定写下来记录一下,方便大家参考
微信授权的话,首先说,得给用户制造一个自己手动触发授权的环境,所以先搭建一个页面,简简单单的
按钮这块的open-type需要是getUserInfo
<button type='primary' open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="bindGetUserInfo">
授权登录
</button>
到这儿的时候一定要梳理清晰你要的是哪些数据,还有这些数据要通过哪种方式去获得和需要的参数
-
用户授权后,需要知道用户是否授权成功,通过wx.getSetting查看是否成功
-
成功的话,通过wx.login获取用户的code,因为获取openid和unionid需要用code
-
然后最后就是通过微信的auth.code2Session获取我们最终想要的
获取openid和unionid、session_key
/**
* @name 获取用户信息
* @date 2021-02-20
*/
bindGetUserInfo(e) {
// 获取用户授权
wx.getSetting({
success: (res) => {
//判断是否授权成功
if (res.authSetting['scope.userInfo']) {
wx.login({
success: (rest) => {
//用户的code
let userCode = rest.code
wx.request({
// 自行补上自己的 APPID 和 SECRET
url:`https://api.weixin.qq.com/sns/jscode2session?appid=自己的appid&secret=密钥&js_code=${
userCode}&grant_type=authorization_code`,
success: res => {
// 获取到用户的 openid
console.log("用户的openid:" + res.data.openid);
console.log("用户的unionid:" + res.data.unionid);
console.log("用户的session_key:" + res.session_key);
},
fail(e){
wx.showToast({
title: '获取失败',
icon: 'none'
});
},
});
}
})
} else {
wx.showToast({
title: '请确认授权',
icon: 'none'
});
}
}
});
},
tips:获取unionid的话是需要微信开放平台绑定小程序的,不然是不可能获取到的
查找 APPID 和 SECRET
微信公众平台->开发->开发管理->开发设置
auth.code2Session
比较简单,大家可以自行查看 link
在调这个接口的时候,一开始总是提示我code无效 40029,找了半天是因为创建项目用的appid和接口参数的appid不一样,希望大家写的时候注意
这样就能获取到我们想要的数据啦