在站點中集成Github的Oauth登陸

註冊Oauth App

註冊地址:Developer applications (github.com),可以註冊多個App,註冊完成後,可以在右側看到註冊的App

  

點擊進去,可以看到一些基本信息,其中最重要的是CleintId和ClientSecrets(默認沒有,自己創建即可),

  

其中ClientId是公開的,用於標誌你的OauthApp,ClientSecrets則可以認爲是私鑰,用來獲取認證後的用戶令牌的,需要保密,如果丟了或公開了則需要換一個。

認證流程

認證流程其實就是一個通過Github用戶授權獲取Github用戶信息的過程,其流程在其官方文檔授權 OAuth 應用程序中寫得比較詳細,大體分爲如下幾步:

  1. 將用戶重定向到github oauth授權頁。

  授權示例地址爲:https://github.com/login/oauth/authorize?client_id=ba674d236a91709b69b1官方文檔說明更加詳細些。其中有兩個參數比較重要:client_id和redirect_uri。

  • client_id就是前面註冊時分發的CleintId,是必選的,否則github不知道用於和哪個站點集成認證。
  • redirect_uri則是認證後的跳轉地址,用於傳遞用戶的臨時token,這個參數是選填的,如果不填會跳轉到註冊時填的跳轉地址。

  如果用戶未授權,會出現下面的一個授權確認的對話框,如果已經授權,會直接跳轉到跳轉地址。

      

 
 2. 獲取用戶授權碼。根據授權碼獲取用戶訪問token。

  用戶授權完成後,會跳轉到指定的跳轉頁,同時會返回一個臨時的用戶授權碼code作爲參數。

      

有的這個用戶授權碼code,還不能獲取用戶token,需要把這個授權碼傳給後端,後端和私鑰client_secret一起獲取用戶token。

如下是一個獲取token地址示例:https://github.com/login/o獲取auth/access_token?client_id=xxx&client_secret=xxx&code=xxx。還有幾個其它參數可以參考官方文檔

獲取到的用戶令牌示例如下:access_token=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&scope=&token_type=bearer

PS:因爲授權id是公開的,因此是不能直接根據授權碼獲取用戶信息的,必須和私鑰配合。

 
  3. 根據用戶令牌獲取用戶信息:

  有了用戶令牌後,就可以訪問用戶信息了,以其用戶信息接口https://api.github.com/user爲例:

到此時,已經能獲取到用戶信息了,可以將改用戶直接登錄,或關聯到現有的用戶了。後面流程和Oauth就沒有關係了。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章