OAuth2 結合網站受權流程分析

第一步:組裝 URL 請求獲取受權碼 code
    1. 用戶訪問一個第三方 URL 網址,這時第三方服務端收到請求,組裝 URL,隨機生成 state 並存儲(Cookies、Session、Mysql等),而後引導用戶請求訪問該 URL(自動跳轉到該 URL)
    2. 用戶會被帶到開放平臺的受權網址頁面,用戶登陸操做後,會跳轉到第三方的回調地址,而且 URL 會帶上 code 和 state

第二步:經過 code 獲取 access_token
    1. 第三方服務端獲取 code 和 state
    2. 第三方服務端驗證 state,以確保該請求是第三方服務器本身發起的,防止 csrf 攻擊
    3. 第三方服務端驗證使用 code 加上 AppID、AppSecret 等,經過 API 接口換取 access_token(請求遠程 API 獲取遠程數據)

第三步:經過 access_token 調用接口
    1. 第三方服務端獲取到 access_token 後,經過 API 接口獲取用戶我的信息,並完成登陸或註冊動做,成爲第三方用戶

以上部分爲受權並獲取用戶信息
接着第三方網站須要經過獲取到的用戶信息進一步操做(註冊或登陸)

1. 判斷用戶是否登陸狀態,是的話直接綁定用戶
2. 非登陸狀態則查詢該用戶是否綁定,若是已經綁定則跳轉,若是無綁定則忽略
3. 這時判斷獲取的用戶信息組裝的用戶名是否存在,不存在則直接添加,存在則系統從新組裝用戶明,而後判斷是否用戶名是否在線,直到不存在添加用戶爲止
4. 這時繼續判斷添加用戶的方法執行是否成功,不成功則提示註冊失敗,成功則拷貝用戶頭像並更新用戶數據,而後執行登陸。

1. 什麼是受權臨時票據(code)?
答:第三方經過 code 進行獲取 access_token 的時候須要用到,code 的超時時間通常爲幾分鐘(例如:10 分鐘),一個 code 只能成功換取一次 access_token 即失效。code 的臨時性和一次保障了受權登陸的安全性。第三方可經過使用 https 和 state 參數,進一步增強自身受權登陸的安全性。
 
2. 什麼是受權做用域(scope)?
答:受權做用域 scope 表明用戶受權給第三方的接口權限,第三方應用須要向開放平臺申請使用相應 scope 的權限後,使用文檔所述方式讓用戶進行受權,通過用戶受權,獲取到相應 access_token 後方可對接口進行調用。
通俗點來講就是,API 接口權限。例如:獲取用戶我的信息 get_user_info 接口、獲取用戶粉絲列表 get_fanslist(固然這些要開放平臺有這些 API 才行,這裏只是舉例)sql

相關文章
相關標籤/搜索