傳統微信授權登錄方式
- 小程序調用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,但是獲取不到頭像和昵稱等等信息):
