传统微信授权登录方式
- 小程序调用wx.login获取(微信服务器端)code(5分钟有效,5分钟不使用失效,需重新调用wx.login);
- 小程序调用wx.request 将code传递给后端服务器;
- 后端使用code换取openid和session_key;
- 后端将openid(用户标识)发送个小程序本地存储。
云开发微信登录
- 小程序调用云函数;
- 云函数(获取OPENID),cloud.getWXContext().OPENID;
- 小程序将用户信息存储到云数据库。
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,但是获取不到头像和昵称等等信息):