為了方便用戶使用小程序時,使用微信賬號授權快速登錄軟件宋税,微信小程序提供了相關的授權接口摊崭。小程序可以通過微信官方提供的登錄能力方便地獲取微信提供的用戶身份標識,快速建立小程序內(nèi)的用戶體系杰赛。
流程
從流程圖呢簸,我們看到這里涉及到三個角色:小程序(前端)、業(yè)務服務(我們自己服務)乏屯、微信接口服務(相當于第三方服務)根时,小程序首先通過wx.login()
函數(shù)獲取當前用戶的code,然后再通過wx.request
將code傳送到服務器辰晕。服務器端將appid
蛤迎、appsecret
、code
等參數(shù)通過request提交到微信服務接口伞芹,微信服務接口反饋openid
、session_key
參數(shù)蝉娜。
小程序
小程序端唱较,涉及兩個函數(shù)為wx.login()
函數(shù)和wx.request()
函數(shù),名為code
的變量召川。這兩個函數(shù)及變量都是小程序官方提供的南缓。
- wx.login() - 用于調(diào)用接口獲取登錄憑證code。
- code - 用戶登錄憑證(有效期五分鐘)荧呐,登錄憑證 code 每次登錄后只能使用一次汉形。
- wx.request() - 用于發(fā)起請求纸镊,在登錄時將用戶登錄憑證 code 傳輸?shù)介_發(fā)者服務器后臺調(diào)用。注意wx.request()API函數(shù)發(fā)起請求為 HTTPS 網(wǎng)絡請求概疆,從而確保了傳輸過程中數(shù)據(jù)的安全性逗威。
業(yè)務服務器
在業(yè)務服務器端,我們通過小程序的 appId
岔冀、appSecret
(在開發(fā)小程序時填寫過)和wx.request()請求傳輸過來的code以及默認的授權類型(authorization_code)凯旭,然后調(diào)用的微信接口服務authorization_code()獲取此用戶的openid
、session_key
使套、unionid
等參數(shù)罐呼。
- appId - 小程序的ID,這個ID是唯一的侦高,可以進入小程序設置-開發(fā)設置中獲取嫉柴。
- appSecret - 小程序密鑰,也是唯一的奉呛,可以進入小程序設置-開發(fā)設置中獲取计螺。
微信服務接口
微信服務器會根據(jù)業(yè)務服務器發(fā)送HTTP請求(包含appid
、appSecret
侧馅、code
參數(shù))危尿,給業(yè)務服務器發(fā)送對應的openid
、session_key
馁痴、unionid
等參數(shù)谊娇。
- openid - 每個微信用戶在同一小程序的唯一的標識。
- session_key - 解密微信服務器傳回來的公開敏感數(shù)據(jù)罗晕,如對wx.getUserInfo()接口得到“用戶信息中的密文”進行解密济欢。session_key是具備有效期的,可以作為登錄狀態(tài)進行維護小渊。
- unionid -每個微信用戶在微信平臺的唯一的標識法褥。
本文參考博客http://www.reibang.com/p/19f57996651d