前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP:获取Github OAuth 第三方登录授权

PHP:获取Github OAuth 第三方登录授权

作者头像
Alone88
发布2019-10-22 18:06:54
1.3K0
发布2019-10-22 18:06:54
举报
文章被收录于专栏:Alone88

php github auth 快捷登陆

Github 登陆

申请Github 登陆授权的话,只要一个Github账号就可以了

第三方登陆原理

第三方登陆 就是 获取 OAuth 授权,用户想登陆A网站,A网站要用户提供第三方网站的数据,证明自己的身份。

代码语言:javascript
复制
- 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

Snipaste_2019-06-14_14-30-18.png
Snipaste_2019-06-14_14-30-18.png

Application name:应用名称 Homepage URL:首页地址 Application description:应用描述 Authorization callback URL:回调地址,获取授权返回的地址

添加成功后会得到client_idclient_secreet

第一步 A 网站 跳 Github

通过浏览器 调到 Github 请求方法get 请求地址:https://github.com/login/oauth/authorize 请求参数:

代码语言:javascript
复制
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 会判断用户是否已经登陆,没有登陆会让你登陆

Snipaste_2019-06-14_14-51-01.png
Snipaste_2019-06-14_14-51-01.png

登陆之后会跳到授权页面,用户同意授权之后,Github 会返回一个 code授权码 到A 网站

Snipaste_2019-06-14_14-52-50.png
Snipaste_2019-06-14_14-52-50.png

返回信息

代码语言:javascript
复制
code : xxx
state: xxx

code : Github 返回的授权码,A网站用来向Github 申请令牌用的 state: 上一步生产的state,可以校验跨站攻击

获取令牌

上一步已经拿到code,然后就可以向Github申请令牌了

请求方式:POST 请求地址:https://github.com/login/oauth/access_token 请求参数:

代码语言:javascript
复制
grant_type: authorization_code
code: xxx
client_id: xxx
client_secret: xxx
redirect_uri: https://alone88.cn/oauth/redirect
state: xxx

code :上一步申请的code client_idGithub提供的client_id client_secretgithub 提供的client_secret redirect_urihttps://alone88.cn/oauth/redirect statexxx

返回的参数

代码语言:javascript
复制
token_type:Bearer 
access_token:access_token

token_type:token 类型一般是 Bearer; access_token:Github提供的令牌,有了这个令牌,就可以去获取用户的数据了

获取用户数据

请求方式:GET 请求地址:https://api.github.com/user 请求参数:

代码语言:javascript
复制
access_token:xxx //上一步获取的access_token令牌

获取信息之后就可以得到用户身份了

本文由 Alone88 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: Jun 14, 2019 at 03:34 pm

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Github 登陆
  • 第三方登陆原理
  • php 简单的获取github oauth
  • 添加Github OAuth App
  • 第一步 A 网站 跳 Github
  • 获取 code
  • 获取令牌
  • 获取用户数据
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档