Github 登陆
申请Github 登陆授权的话,只要一个Github账号就可以了
第三方登陆原理
第三方登陆 就是 获取
OAuth
授权,用户想登陆A网站,A网站要用户提供第三方网站的数据,证明自己的身份。
- A 网站让用户跳转到 GitHub。
- GitHub 要求用户登录,然后询问"A 网站要求获得 xx 权限,你是否同意?"
- 用户同意,GitHub 就会重定向回 A 网站,同时发回一个授权码。
- A 网站使用授权码,向 GitHub 请求令牌。
- GitHub 返回令牌.
- A 网站使用令牌,向 GitHub 请求用户数据。
php 简单的获取github oauth
Github地址:https://github.com/anhao/github-with-oauth/
添加Github OAuth App
添加地址:https://github.com/settings/applications/new
Application name
:应用名称Homepage URL
:首页地址Application description
:应用描述Authorization callback URL
:回调地址,获取授权返回的地址
添加成功后会得到client_id
和 client_secreet
第一步 A 网站 跳 Github
通过浏览器 调到 Github
请求方法get
请求地址:https://github.com/login/oauth/authorize
请求参数:
response_type : code
client_id : xxx
redirect_uri : https://alone88.cn/oauth/redirect
scope : user:email
state : xxx
response_type
:请求类型,固定就是code
client_id
:申请到的client_id
redirect_uri
: Github 授权后跳转的链接地址,和申请时填一样scope
: 要申请什么权限state
:随机字符,防跨站攻击
获取 code
获取跳到 github
后,github
会判断用户是否已经登陆,没有登陆会让你登陆
登陆之后会跳到授权页面,用户同意授权之后,Github 会返回一个 code
授权码 到A 网站
返回信息
code : xxx
state: xxx
code
: Github 返回的授权码,A网站用来向Github 申请令牌用的state
: 上一步生产的state,可以校验跨站攻击
获取令牌
上一步已经拿到code
,然后就可以向Github
申请令牌了
请求方式:POST
请求地址:https://github.com/login/oauth/access_token
请求参数:
grant_type: authorization_code
code: xxx
client_id: xxx
client_secret: xxx
redirect_uri: https://alone88.cn/oauth/redirect
state: xxx
code :上一步申请的code
client_id : Github提供的client_id
client_secret : github 提供的client_secret
redirect_uri : https://alone88.cn/oauth/redirect
state : xxx
返回的参数
token_type:Bearer
access_token:access_token
token_type:token 类型一般是 Bearer;
access_token:Github提供的令牌,有了这个令牌,就可以去获取用户的数据了
获取用户数据
请求方式:GET
请求地址:https://api.github.com/user
请求参数:
access_token:xxx //上一步获取的access_token令牌
获取信息之后就可以得到用户身份了