传统微信授权登录方式
- 小程序调用wx.login获取(微信服务器端)code(5分钟有效,5分钟不使用失效,需重新调用wx.login);
- 小程序调用wx.request 将code传递给后端服务器;
- 后端使用code换取openid和session_key;
- 后端将openid(用户标识)发送个小程序本地存储。
云开发微信登录
- 小程序调用云函数;
- 云函数(获取OPENID),cloud.getWXContext().OPENID;
- 小程序将用户信息存储到云数据库。
const wxContext = cloud.getWXContext()// 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)等信息
return {
event,
openid: wxContext.OPENID, //公众号有自己的openid,微信小程序也是自己的微信小程序
appid: wxContext.APPID,
unionid: wxContext.UNIONID,//有公众号和微信小程序,就会有一个unionid,公众号和微信小程序相同
env: wxContext.ENV,
}
例如:
wxml:
<button bindtap="onGetOpenid">获取openid</button>
js:
onGetOpenid(){
wx.cloud.callFunction({ //调用云函数login
name:‘login‘
}).then((res)=>{
console.log("onGetOpenid",res)//打印返回结果
}).catch((err)=>{
console.log("err", err)
})
},
云函数:
exports.main = (event, context) => {
const wxContext = cloud.getWXContext()
return {
event,
openid: wxContext.OPENID,
appid: wxContext.APPID,
unionid: wxContext.UNIONID,
env: wxContext.ENV,
}
}
打印结果(未授权,也可以获取openid,但是获取不到头像和昵称等等信息):