須要填寫 git
application name, (應用名稱), github
homepage url(), (網站首頁)服務器
auth callback url, (受權後的回調地址, 即爲 redirect_uri)app
新建應用後, github 給咱們兩個重要的參數 client_id 和 client_secret網站
若是你創建了一個我的的網站, 你想讓別人不用經過網站自己的註冊就能夠訪問你的網站,那麼用戶
擁有的第三方賬號體系如微博、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
服務器處理 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
基於 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[跳轉到網站首頁或某個特定頁]
本人在 Github 開發了一個 Github 受權登陸的 SDK, 若是有須要的朋友請移步oauth2, 代碼尚有許多不足之處,歡迎 pull request。