微信授权登录方式

传统微信授权登录方式

  1. 小程序调用wx.login获取(微信服务器端)code(5分钟有效,5分钟不使用失效,需重新调用wx.login);
  2. 小程序调用wx.request 将code传递给后端服务器;
  3. 后端使用code换取openid和session_key;
  4. 后端将openid(用户标识)发送个小程序本地存储。

云开发微信登录

  1. 小程序调用云函数;
  2. 云函数(获取OPENID),cloud.getWXContext().OPENID;
  3. 小程序将用户信息存储到云数据库
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,但是获取不到头像和昵称等等信息):

 

猜你喜欢

转载自www.cnblogs.com/baixinL/p/11994371.html