登錄與授權(quán)
創(chuàng)新互聯(lián)是一家網(wǎng)站設(shè)計公司,集創(chuàng)意、互聯(lián)網(wǎng)應(yīng)用、軟件技術(shù)為一體的創(chuàng)意網(wǎng)站建設(shè)服務(wù)商,主營產(chǎn)品:響應(yīng)式網(wǎng)站設(shè)計、品牌網(wǎng)站設(shè)計、成都全網(wǎng)營銷。我們專注企業(yè)品牌在網(wǎng)站中的整體樹立,網(wǎng)絡(luò)互動的體驗,以及在手機等移動端的優(yōu)質(zhì)呈現(xiàn)。網(wǎng)站制作、成都網(wǎng)站設(shè)計、移動互聯(lián)產(chǎn)品、網(wǎng)絡(luò)運營、VI設(shè)計、云產(chǎn)品.運維為核心業(yè)務(wù)。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認(rèn)真對待每位客戶,為客戶提供賞析悅目的作品,網(wǎng)站的價值服務(wù)。官方文檔
一.登錄登錄流程時序
說明:
調(diào)用
之后開發(fā)者服務(wù)器可以根據(jù)用戶標(biāo)識來生成自定義登錄態(tài),用于后續(xù)業(yè)務(wù)邏輯中前后端交互時識別用戶身份。
注意:
會話密鑰session_key
是對用戶數(shù)據(jù)進行加密簽名的密鑰。為了應(yīng)用自身的數(shù)據(jù)安全,開發(fā)者服務(wù)器不應(yīng)該把會話密鑰下發(fā)到小程序,也不應(yīng)該對外提供這個密鑰。
臨時登錄憑證 code 只能使用一次
總結(jié):
小程序端執(zhí)行wx.login后在回調(diào)函數(shù)中就能拿到上圖的code,然后把這個code傳給我們后端程序,后端拿到這個這個code后,可以請求code2Session接口拿到用的openid和session_key,openid是用戶在微信中唯一標(biāo)識,我們就可以把這個兩個值(val)存起來,然后返回一個鍵(key)給小程序端,下次小程序請求我們后端的時候,帶上這個key,我們就能找到這個val,就可以,這樣就把登入做好了。
wx.login
調(diào)用接口獲取登錄憑證(code)。通過憑證進而換取用戶登錄態(tài)信息,包括用戶的唯一標(biāo)識(openid)及本次登錄的會話
密鑰(session_key)等。用戶數(shù)據(jù)的加解密通訊需要依賴會話密鑰完成。[/code]
參數(shù)
屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 | 最低版本 |
---|---|---|---|---|---|
timeout | number | 否 | 超時時間,單位ms | 1.9.90 | |
success | function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) | ||
fail | function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) | ||
complete | function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行) |
object.success 回調(diào)函數(shù)
參數(shù)
屬性 | 類型 | 說明 |
---|---|---|
code | string | 用戶登錄憑證(有效期五分鐘)。開發(fā)者需要在開發(fā)者服務(wù)器后臺調(diào)用 code2Session,使用 code 換取 openid 和 session_key 等信息 |
code2Session
本接口應(yīng)在服務(wù)器端調(diào)用,詳細說明參見服務(wù)端API。
登錄憑證校驗。通過wx.login()接口獲得臨時登錄憑證 code 后傳到開發(fā)者服務(wù)器調(diào)用此接口完成登錄流程。更多使用方法詳見小程序登錄。
請求地址
GET https://api.weixin.qq.com/sns/jscode2sessionappid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
請求參數(shù)
屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 |
---|---|---|---|---|
appid | string | 是 | 小程序 appId | |
secret | string | 是 | 小程序 appSecret | |
js_code | string | 是 | 登錄時獲取的 code | |
grant_type | string | 是 | 授權(quán)類型,此處只需填寫 authorization_code |
返回值
Object
返回的 JSON 數(shù)據(jù)包
屬性 | 類型 | 說明 |
---|---|---|
openid | string | 用戶唯一標(biāo)識 |
session_key | string | 會話密鑰 |
unionid | string | 用戶在開放平臺的唯一標(biāo)識符,在滿足 UnionID 下發(fā)條件的情況下會返回,詳見 UnionID 機制說明。 |
errcode | number | 錯誤碼 |
errmsg | string | 錯誤信息 |
errcode 的合法值
值 | 說明 |
---|---|
-1 | 系統(tǒng)繁忙,此時請開發(fā)者稍候再試 |
0 | 請求成功 |
40029 | code 無效 |
45011 | 頻率限制,每個用戶每分鐘100次 |
二.信息授權(quán)wx.getUserInfo
獲取用戶信息。
參數(shù)
屬性 | 類型 | 默認(rèn)值 | 必填 | 說明 |
---|---|---|---|---|
withCredentials | boolean | 否 | 是否帶上登錄態(tài)信息。當(dāng) withCredentials 為 true 時,要求此前有調(diào)用過 wx.login 且登錄態(tài)尚未過期,此時返回的數(shù)據(jù)會包含 encryptedData, iv 等敏感信息;當(dāng) withCredentials 為 false 時,不要求有登錄態(tài),返回的數(shù)據(jù)不包含 encryptedData, iv 等敏感信息。 | |
lang | string | en | 否 | 顯示用戶信息的語言 |
success | function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) | |
fail | function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) | |
complete | function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會執(zhí)行) |
object.lang 的合法值
值 | 說明 |
---|---|
en | 英文 |
zh_CN | 簡體中文 |
zh_TW | 繁體中文 |
object.success 回調(diào)函數(shù)
參數(shù)
屬性 | 類型 | 說明 |
---|---|---|
userInfo | UserInfo | 用戶信息對象,不包含 openid 等敏感信息 |
rawData | string | 不包括敏感信息的原始數(shù)據(jù)字符串,用于計算簽名 |
signature | string | 使用 sha1( rawData + sessionkey ) 得到字符串,用于校驗用戶信息,詳見 用戶數(shù)據(jù)的簽名驗證和加解密 |
encryptedData | string | 包括敏感數(shù)據(jù)在內(nèi)的完整用戶信息的加密數(shù)據(jù),詳見 用戶數(shù)據(jù)的簽名驗證和加解密 |
iv | string | 加密算法的初始向量,詳見 用戶數(shù)據(jù)的簽名驗證和加解密 |
注意:
1.小程序端獲取授權(quán)信息要用button按鈕觸發(fā)
2.小程序端需要將 encryptedData, iv, login_key 傳到后端用于解密
案例:
登錄:
當(dāng)小程序第一次執(zhí)行的時候就調(diào)用wx.login
小程序端:apps.js
App({ onLaunch: function () { var _this=this // 登錄 wx.login({ success: res => { // 發(fā)送 res.code 到后臺換取 openId, sessionKey, unionId wx.request({ url: _this.globalData.Url+'/login/', // 后端路徑 data:{"code":res.code}, // code header:{"content-type":"application/json"}, method:"POST", success:function(res){ console.log(res) // 小程序端存儲login_key wx.setStorageSync("login_key",res.data.data.login_key) } }) } }) }, globalData: { Url:"http://127.0.0.1:8000", userInfo: null } })
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站標(biāo)題:微信小程序后端實現(xiàn)授權(quán)登錄-創(chuàng)新互聯(lián)
文章出自:http://aaarwkj.com/article46/gdphg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站設(shè)計、網(wǎng)站維護、建站公司、搜索引擎優(yōu)化、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容