Github第三方授权登录
创建一个OAuth App
登录Github,在用户头像的位置,依次进入:
->
Settings/Developer settings/OAuth Apps点击
New OAuth App

新建OAuth App
- Application name,自定义的名字
- Homepage URL,随便写个
- Application description,描述,自定义写
- Authorization callback URL,请求github后回调的url,认真写个,不过以后能改

编辑OAuth App信息
- 这是你的客户端id和密钥

- 这是头像和信息,我这里回调地址写的本地地址,项目上线后再改成公网地址

授权流程
流程图:

实现
- ①调用github授权的api,传递自己的id、scope(是需要的信息,比如user),用controller跳转或直接写在页面的a标签里。
GET方式,api: https://github.com/login/oauth/authorize
必带参数:client_id:客户端idscope:需要请求的信息,user repo
返回值:code:用于下一步请求access_tokenstate:这一步请求时的可选参数,是自己定义的一串字符串
返回值实例:http://localhost:8888/github/codeCallback?code=d367eeabc1e0614c3a58&state=shirtiny2011054984anro
更多参数详情,参照官方文档。
Controller(或直接写在页面里)
1 | ("${Github_Oauth_Authorize_FullUrl}") |
- ②处理github响应的code、state,传给github的access_token api,拿到响应后的令牌
POST方式,api:https://github.com/login/oauth/access_token
必带参数:client_id:客户端idclient_secret:客户端密钥code:上一步github返回的codestate:上一步github返回的state,如果有的话
返回值:access_token:用于下一步请求用户信息token_type:令牌类型
返回值实例:access_token=e72e16c7e42f292c6912e7710c838347ae178b4a&token_type=bearer
服务
1 |
|
- ③将响应的令牌传给github的user api,获取用户信息
GET方式,api:https://api.github.com/user
必带参数:access_token:上一步github返回的access_token
返回值:
用户信息,一个json格式的字符串,建议建一个实体类,方便存储这些信息。
服务
1 |
|
完整Controller
1 | package cn.shirtiny.community.SHcommunity.Controller; |
属性配置文件
*为保密信息
1 | Github_Oauth_Authorize_Url=https://github.com/login/oauth/authorize |
首页页面
1 | <!-- 右下拉框--> |