微信小程序API登陸憑證(code),得到的用戶登陸態擁有必定的時效性

調用接口獲取 登陸憑證(code)進而換取用戶登陸態信息,包括用戶的 惟一標識(openid) 及本次登陸的 會話密鑰(session_key)用戶數據的加解密通信須要依賴會話密鑰完成。

 

OBJECT參數說明:javascript

 

參數名 類型 必填 說明
success Function 接口調用成功的回調函數
fail Function 接口調用失敗的回調函數
complete Function 接口調用結束的回調函數(調用成功、失敗都會執行)

 

success返回參數說明:java

 

參數名 類型 說明
errMsg String 調用結果
code String 用戶容許登陸後,回調內容會帶上 code(有效期五分鐘),開發者須要將 code 發送到開發者服務器後臺,使用code 換取 session_key api,將 code 換成 openid 和 session_key

 

示例代碼:小程序

//app.js App({ onLaunch: function() { wx.login({ success: function(res) { if (res.code) { //發起網絡請求 wx.request({ url: 'https://test.com/onLogin', data: { code: res.code } }) } else { console.log('獲取用戶登陸態失敗!' + res.errMsg) } } }); } }) 

code 換取 session_key

​這是一個 HTTPS 接口,開發者服務器使用登陸憑證 code 獲取 session_key 和 openid。其中 session_key 是對用戶數據進行加密簽名的密鑰。爲了自身應用安全,session_key 不該該在網絡上傳輸api

接口地址:安全

https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code 

請求參數:服務器

參數 必填 說明
appid 小程序惟一標識
secret 小程序的 app secret
js_code 登陸時獲取的 code
grant_type 填寫爲 authorization_code

返回參數:微信

 

參數 說明
openid 用戶惟一標識
session_key 會話密鑰
unionid 用戶在開放平臺的惟一標識符。本字段在知足必定條件的狀況下才返回。具體參看UnionID機制說明

 

返回說明:網絡

//正常返回的JSON數據包 { "openid": "OPENID", "session_key": "SESSIONKEY" "unionid": "UNIONID" } //錯誤時返回JSON數據包(示例爲Code無效) { "errcode": 40029, "errmsg": "invalid code" } 

 

wx.checkSession(OBJECT)


 

經過上述接口得到的用戶登陸態擁有必定的時效性。用戶越久未使用小程序,用戶登陸態越有可能失效。反之若是用戶一直在使用小程序,則用戶登陸態一直保持有效。具體時效邏輯由微信維護,對開發者透明。開發者只須要調用wx.checkSession接口檢測當前用戶登陸態是否有效。登陸態過時後開發者能夠再調用wx.login獲取新的用戶登陸態。session

OBJECT參數說明:app

參數名 類型 必填 說明
success Function 接口調用成功的回調函數,登錄態未過時
fail Function 接口調用失敗的回調函數,登錄態已過時
complete Function 接口調用結束的回調函數(調用成功、失敗都會執行)

示例代碼:

wx.checkSession({
  success: function(){ //session 未過時,而且在本生命週期一直有效 }, fail: function(){ //登陸態過時 wx.login() //從新登陸....
  }
})

 

登陸態維護

 

經過wx.login()獲取到用戶登陸態以後,須要維護登陸態。開發者要注意不該該直接把 session_key、openid 等字段做爲用戶的標識或者 session 的標識,而應該本身派發一個 session 登陸態(請參考登陸時序圖)。對於開發者本身生成的 session,應該保證其安全性且不該該設置較長的過時時間。session 派發到小程序客戶端以後,可將其存儲在 storage ,用於後續通訊使用。

經過wx.checkSession()檢測用戶登陸態是否失效。並決定是否調用wx.login() 從新獲取登陸態

相關文章
相關標籤/搜索