微信小程序之微信登录
作者:互联网
在开发微信小程序的时候,我们经常需要用到微信登录,通过wx
的接口来获取微信用户的信息,然后存储到我们数据库来创建属于我们系统的用户信息。
所以我们就要使用到wx.login(),wx.getUserProfile()
,这两个方法。
wx.login()
wx.login()
,是调用接口获取登录凭证(code)。通过凭证进而换取用户登录态信息,包括用户在当前小程序的唯一标识(openid
)、微信开放平台帐号下的唯一标识(unionid
,若当前小程序已绑定到微信开放平台帐号)及本次登录的会话密钥(session_key)等。用户数据的加解密通讯需要依赖会话密钥完成。
我们通过获取到的code,传给后端,由后端通过调用 auth.code2Session 接口,来获取用户唯一标识 OpenID
、 用户在微信开放平台帐号下的唯一标识UnionID
(若当前小程序已绑定到微信开放平台帐号) 和 会话密钥 session_key。
wx.login({
success (res) {
console.log(res);
if (res.code) { //获取到code之后,传给后端,接口
wx.request({
url: url,
data: {
code: res.code,
user_name:e.nickName
},
success: (res) => {
console.log(res.data);
if(res.data.ret){
let userInfo = Object.assign(e,res.data)
console.log(userInfo);
wx.setStorage({
key:"userInfo",
data:JSON.stringify(userInfo)
})
}else{
wx.showToast({title: '登录失败',icon:'error',duration:2000})
}
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
wx.getUserProfile()
wx.getUserProfile()
,获取用户信息。页面产生点击事件(例如 button
上 bindtap
的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo
。该接口用于替换 wx.getUserInfo
这个是新的微信获取用户的方法了,之前的wx.getUserInfo()
,已经不能弹窗了。
getUserProfile(e){
let that = this
wx.getUserProfile({
desc: '展示用户信息', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
success: (res) => {
console.log(res);
},
fail:(res)=>{
console.log(res);
}
})
},
两者合一
但是在实际的使用的时候,我们之后点击一次来获取这些信息,所以就会出现一个问题,wx.getUserProfile()
,是不能通过API调用,所以只能先调用wx.getUserProfile()
,然后再去调用wx.login()
。
这样就可以完美获取用户的信息了,并且转化为系统需要的用户和信息
标签:code,登录,微信,用户,之微信,res,getUserProfile,wx 来源: https://blog.csdn.net/lu6545311/article/details/117557162