| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
9年前发布

用github登录,oauth开发

最近做的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 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1416812717570.html
OpenID/单点登录SSO Github