Github 受權登陸 Oauth2.0

1. 在 github 的 settings -> Developer settings -> 新建應用

須要填寫 git

application name, (應用名稱), github

homepage url(), (網站首頁)服務器

auth callback url, (受權後的回調地址, 即爲 redirect_uri)app

新建應用後, github 給咱們兩個重要的參數 client_id 和 client_secret網站

2. 應用場景-github 受權登陸

若是你創建了一個我的的網站, 你想讓別人不用經過網站自己的註冊就能夠訪問你的網站,那麼用戶
擁有的第三方賬號體系如微博、github 等第三方應用受權登陸是個不錯的方案。url

想要得到 github 的受權, 你必須進行第 1 步操做--最基本的申請。
接下來還要將用戶引導到 github 的受權登陸頁, github 的受權登陸頁是
https://github.com/login/oaut...[你的client_id]&redirect_uri=[你的auth callback url]code

其中 redirect_uri 是第 1 步你配置好的, 在受權登陸頁能夠不傳此參數, github 會默認跳到你配置好的受權後的回調地址, 本地開發時, 我喜歡將受權地址設置爲 http://localhost:8000/github/oauth/callbacktoken

3. 處理回調

服務器處理 http://localhost:8000/github/oauth/callback 請求
該回調地址是 github 受權處理後返回的 url 地址, github 會在請求中帶一個參數 code
咱們能夠使用 code 獲取 access_token, 請求爲開發

acc_res = requests.get("https://github.com/login/oauth/access_token",
                            params={"client_id": "xxx",
                                    "client_secret": "xxx",
                                    "code": code,
                                    "redirect_uri": "xxx"
                                    })

返回的 acc_res 中就含有 access_token, 使用 access_token 就能夠得到用戶的 github 賬號信息。get

4. 圖解 github 受權

基於 Oauth2.0 的受權流程都是差很少的, 區別在於申請 client_id 和 client_secret 這個過程是否複雜,像新浪微博的申請就比較麻煩。

graph LR
a[開發者]-->|在 Github 建立應用|b[Github]
b-->|登記應用信息並返回client_id 和 client_secret|d[開發者]
graph LR
a[匿名用戶]-->|使用Github 賬號登陸|b[引導到 Github 登陸受權頁]
b-->|用戶受權|d[Github 處理受權請求並返回回調地址和參數code]
graph LR
d[服務器處理回調地址]-->|使用code獲取access_token繼而獲取 Github賬號信息|e[建立用戶並綁定用戶的Github賬號]
e-->f[跳轉到網站首頁或某個特定頁]

5. 開源的 Oauth2.0 倉庫

本人在 Github 開發了一個 Github 受權登陸的 SDK, 若是有須要的朋友請移步oauth2, 代碼尚有許多不足之處,歡迎 pull request。

相關文章
相關標籤/搜索