OAuth2介紹與使用


什么是OAuth2

OAuth(Open Authorization,開放授權)是為用戶資源的授權定義了一個安全、開放及簡單的標准,第三方無需知道用戶的賬號及密碼,就可獲取到用戶的授權信息
OAuth2.0是OAuth協議的延續版本,但不向后兼容OAuth 1.0即完全廢止了OAuth1.0

應用場景

第三方應用授權登錄:在APP或者網頁接入一些第三方應用時,時常會需要用戶登錄另一個合作平台,比如QQ,微博,微信的授權登錄,第三方應用通過oauth2方式獲取用戶信息

運作流程

微信開發文檔流程說明如下:

1. 第三方發起微信授權登錄請求,微信用戶允許授權第三方應用后,微信會拉起應用或重定向到第三方網站,並且帶上授權臨時票據code參數;

2. 通過code參數加上AppID和AppSecret等,通過API換取access_token;

3. 通過access_token進行接口調用,獲取用戶基本數據資源或幫助用戶實現基本操作。

具體的實現流程圖如下:

 
OAuth2流程圖

步驟說明(以微信授權登錄為例)

1.用戶訪問第三方網站,第三方應用需要用戶登錄驗證,用戶選擇微信授權登錄
2.第三方應用發起微信登錄授權請求

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 
參數 是否必須 說明
appid 公眾號的唯一標識
redirect_uri 授權后重定向的回調鏈接地址
response_type 返回類型,請填寫code
scope 應用授權作用域,snsapi_base 、snsapi_userinfo
state 重定向后會帶上state參數,該值會被微信原樣返回,我們可以將其進行比對防止攻擊或者做用戶步驟1訪問url保存
wechat_redirect 直接在微信打開鏈接,可以不填此參數。做頁面302重定向時候,必須帶此參數

3.微信服務器拉起用戶授權確認頁面
4.用戶授權通過
5.微信發送請求到第三方應用redirctUrl(第2步填寫redirct_uri參數),返回憑證code與state(第2步自定義)

http://host/redirct_uri?code=0217a07e9c194dbf539c45c266b2dcfZ&state=state 

6.第三方應用獲取到code之后,根據code獲取accessToken

https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code 
參數 是否必須 說明
appid 應用唯一標識,在微信開放平台提交應用審核通過后獲得
secret 應用密鑰AppSecret,在微信開放平台提交應用審核通過后獲得
code 填寫第一步獲取的code參數
grant_type 填authorization_code

返回參數

參數 說明
access_token 接口調用憑證
expires_in access_token接口調用憑證超時時間,單位(秒)
refresh_token 用戶刷新access_token
openid 授權用戶唯一標識
scope 用戶授權的作用域,使用逗號(,)分隔

7.根據accessToken獲取用戶信息

https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID 

返回參數

參數 說明
openid 普通用戶的標識,對當前開發者帳號唯一
nickname 普通用戶昵稱
sex 普通用戶性別,1為男性,2為女性
province 普通用戶個人資料填寫的省份
city 普通用戶個人資料填寫的城市
country 國家,如中國為CN
headimgurl 用戶頭像,最后一個數值代表正方形頭像大小(有0、46、64、96、132數值可選,0代表640*640正方形頭像),用戶沒有頭像時該項為空
privilege 用戶特權信息,json數組,如微信沃卡用戶為(chinaunicom)
unionid 用戶統一標識。針對一個微信開放平台帳號下的應用,同一用戶的unionid是唯一的。

8.對用戶信息進行處理(用戶是否第一次登錄,保存用戶信息,自定義token,session處理等)
9.返回結果(步驟1對應url或者重定向到首頁)

至此,微信OAuth2授權登錄過程結束
具體細節請參考微信開發平台-移動應用授權登錄


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM