用github登錄,oauth開發
最近做的oj項目的網站子項目中要使用到“用github登錄”這一功能,也就是oauth,于是研究了一番。
github的oauth驗證的過程如下:
用戶訪問登錄驗證接入口
https://github.com/login/oauth/authorize?client_id=xxxxxxxxxxxxxxxxxx&scope=user,public_repo
其中client_id由開發者在github網站上申請,無限制。
申請成功后,獲取client_id和client_secret
用戶訪問上面的url之后,github會讓其跳轉到你預定的url,并且帶上code參數,例如
然后,開發者可以通過code,client_id以及client_secret這三個參數獲取用戶的access_token即用戶身份標識,請求如下
這個請求將會返回如下內容
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