微信小程序API 登錄
wx.login(OBJECT)
調(diào)用接口獲取登錄憑證(code)進(jìn)而換取用戶登錄態(tài)信息,包括用戶的唯一標(biāo)識(shí)(openid) 及本次登錄的 會(huì)話密鑰(session_key)。用戶數(shù)據(jù)的加解密通訊需要依賴會(huì)話密鑰完成。
OBJECT參數(shù)說明:
success返回參數(shù)說明:
示例代碼:
//app.js App({ onLaunch: function() { wx.login({ success: function(res) { if (res.code) { //發(fā)起網(wǎng)絡(luò)請(qǐng)求 wx.request({ url: 'https://test.com/onLogin', data: { code: res.code } }) } else { console.log('獲取用戶登錄態(tài)失敗!' + res.errMsg) } } }); } })
code 換取 session_key
這是一個(gè) HTTPS 接口,開發(fā)者服務(wù)器使用登錄憑證 code 獲取 session_key 和 openid。其中 session_key 是對(duì)用戶數(shù)據(jù)進(jìn)行加密簽名的密鑰。為了自身應(yīng)用安全,session_key 不應(yīng)該在網(wǎng)絡(luò)上傳輸。
接口地址:
https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
請(qǐng)求參數(shù):
返回參數(shù):
參數(shù) | 說明 |
---|---|
openid | 用戶唯一標(biāo)識(shí) |
session_key | 會(huì)話密鑰 |
返回說明:
//正常返回的JSON數(shù)據(jù)包 { "openid": "OPENID", "session_key": "SESSIONKEY" } //錯(cuò)誤時(shí)返回JSON數(shù)據(jù)包(示例為Code無效) { "errcode": 40029, "errmsg": "invalid code" }
登錄態(tài)維護(hù)
通過 wx.login()
獲取到用戶登錄態(tài)之后,需要維護(hù)登錄態(tài)。開發(fā)者要注意不應(yīng)該直接把 session_key、openid 等字段作為用戶的標(biāo)識(shí)或者 session 的標(biāo)識(shí),而應(yīng)該自己派發(fā)一個(gè) session 登錄態(tài)(請(qǐng)參考登錄時(shí)序圖)。對(duì)于開發(fā)者自己生成的 session,應(yīng)該保證其安全性且不應(yīng)該設(shè)置較長(zhǎng)的過期時(shí)間。session 派發(fā)到小程序客戶端之后,可將其存儲(chǔ)在 storage ,用于后續(xù)通信使用。
登錄時(shí)序圖
wx.checkSession(OBJECT)
檢查登陸態(tài)是否過期
示例代碼:
wx.checkSession({ success: function(){ //登錄態(tài)未過期 }, fail: function(){ //登錄態(tài)過期 wx.login() } })
Bug & Tip
bug
:iOS/Android
6.3.30
,在 App.onLaunch 調(diào)用 wx.login 會(huì)出現(xiàn)異常;