专栏首页Alone88PHP:获取Github OAuth 第三方登录授权

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

php github auth 快捷登陆

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_idclient_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_idGithub提供的client_id client_secretgithub 提供的client_secret redirect_urihttps://alone88.cn/oauth/redirect statexxx

返回的参数

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令牌

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cloudflare 推出全球最快的Dns:1.1.1.1

    DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被...

    Alone88
  • nginx 禁止ip直接访问,防止恶意解析

    找到 nginx 的默认配置文件 nginx.conf 编辑文件找到 默认的80 server

    Alone88
  • Github 注册教程,托管自己的代码,静态页,GIt工具安装使用

    gitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名gitHub。 github 还可以通过page功能来访...

    Alone88
  • 神经网络图的简介(基本概念,DeepWalk以及GraphSage算法)

    近来,图神经网络(GNN)在各个领域广受关注,比如社交网络,知识图谱,推荐系统以及生命科学。GNN在对图节点之间依赖关系进行建模的强大功能使得与图分析相关的研究...

    AI研习社
  • PHP7新增的NULL合并运算符??和?:的区别

    (1)??是只要前面的变量定义过了(即isset()为真)或前面表达式为真,则返回前面的值。

    vimsudoers
  • 一文俯瞰Elasticsearch核心原理

    Lucene是一种高性能、可伸缩的信息搜索(IR)库,在2000年开源,最初由鼎鼎大名的Doug Cutting开发,是基于Java实现的高性能的开源项目。Lu...

    暴走大数据
  • linux常用命令之压缩打包用法选项DEMO注意选项DEMO用法选项用法选项DEMO

    DF df – report file system disk space usage 查看文件系统的使用清空 用法 df [-hi] [path]选项-h h...

    用户1174983
  • Wifi WPS解锁器 - 恢复默认的WPS PIN码

    https://play.google.com/store/apps/details?id=com.MelasGR.wifiunlocker&hl=en

    重生信息安全
  • Bengio 团队力作:GNN 对比基准横空出世,图神经网络的「ImageNet」来了

    图神经网络(GNN)是当下风头无两的热门研究话题。然而,正如计算机视觉的崛起有赖于 ImageNet 的诞生,图神经网络也急需一个全球学者公认的统一对比基准。

    AI科技评论
  • 基于webmagic的爬虫项目经验小结

    大概在1个月前,利用webmagic做了一个爬虫项目,下面是该项目的一些个人心得,贴在这里备份: 一、为什么选择webmagic? 说实话,开源的爬虫框架已经很...

    菩提树下的杨过

扫码关注云+社区

领取腾讯云代金券