最近查了一下OAuth 2.0的流程,簡單總結了一下。
詳細參照: OAuth 2.0.
簡單流程圖
說明
-
用戶訪問網站A;“h ttp://XXXXXX.com”
-
登陸用戶時,用戶選擇 使用github賬號 登陸,網站A連接github網站,協商取得情報;
-
github將情報 Client Id + Client Secret 返回給網站A
-
網站A將 Client Id 連攜給用戶
-
用戶使用 Client Id 連接到github,進行確認授權
例;// 用戶登錄 github,協商
GET //github.com/login/oauth/authorize
// 協商憑證
params = {
client_id: “xxxx”,
redirect_uri: “h ttp://XXXXXX.com”
} -
用戶在github的確認授權畫面,同意授權後,github將生成code信息連攜給網站A,並通過 redirect_uri 的設定值,跳轉到網站A
// 協商成功後帶着蓋了章的 code
Location: h ttp://XXXXXX.com?code=xxx -
網站A拿着code和最開始拿到的Client Secret,訪問github獲得最終的通行證
// 網站和 github 之間的協商
POST //github.com/login/oauth/access_token
// 協商憑證包括 github 給用戶蓋的章和 github 發給我的門票
params = {
code: “xxx”,
client_id: “xxx”,
client_secret: “xxx”,
redirect_uri: “h ttp://XXXXXX.com”
} -
返回 access_token
// 拿到最後的綠卡
response = {
access_token: “e72e16c7e42f292c6912e7710c838347ae178b4a”
scope: “user,gist”
token_type: “bearer”,
refresh_token: “xxxx”
} -
如果使用有效期限的話,當token過期的話,還需要Refresh Token。