用github登錄,oauth開發

jopen 10年前發布 | 93K 次閱讀 OpenID/單點登錄SSO Github

最近做的oj項目的網站子項目中要使用到“用github登錄”這一功能,也就是oauth,于是研究了一番。

github的oauth驗證的過程如下:

用戶訪問登錄驗證接入口

https://github.com/login/oauth/authorize?client_id=xxxxxxxxxxxxxxxxxx&scope=user,public_repo 

其中client_id由開發者在github網站上申請,無限制。
用github登錄,oauth開發
申請成功后,獲取client_id和client_secret
用github登錄,oauth開發

用戶訪問上面的url之后,github會讓其跳轉到你預定的url,并且帶上code參數,例如

http://oj.duguying.net/oauth/github?code=xxxxxxxxxxxxxxxxxx 

然后,開發者可以通過code,client_id以及client_secret這三個參數獲取用戶的access_token即用戶身份標識,請求如下

https://github.com/login/oauth/access_token?client_id=xxxxxxxxxxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxxxx&code=xxxxxxxxxxxxxxxxxxx 

這個請求將會返回如下內容 

access_token=xxxxxxxxxxxxxxxxxxxxxxxxx&scope=public_repo%2Cuser&token_type=bearer 

有了access_token之后,只需要通過如下請求就可以獲取用戶信息

https://api.github.com/user?access_token=xxxxxxxxxxxxxxxxxxxxxxxxx 

返回的信息將會是json格式。注意整個請求過程中都是使用GET請求。只要理解了oauth驗證過程,如此就很容易編程實現了。

最后,附上我自己用golang實現的github的oauth驗證庫https://github.com/gogather/oauth

來自:http://duguying.net/article/%E7%94%A8github%E7%99%BB%E5%BD%95%EF%BC%8Coauth%E5%BC%80%E5%8F%91

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!