如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。
PHP高手欢聚QQ群:218127186 逗逼虎开心聊QQ群:175454274
github
登陆的事情,苏南大叔已经写过一篇文章了。如何申请appid
和secret
请参见这里,https://newsn.net/say/oauth-login-github-apply.html 。拿到了client_id
和client_secret
之后,我们就可以开工了。但是,从哪里着手呢?其实github
的这个登陆,肯定是遵守现在最流行的oauth
协议的。oauth
协议也有几个分支,这里我们只讨论:使用范围最广的oauth2.0
的情况。
github的oauth登陆的基本流程,oauth2.0原理解析(图3-1)
官方对这个事情的描述,见这里:https://developer.github.com/apps/building-integrations/setting-up-and-registering-oauth-apps/about-authorization-options-for-oauth-apps/ 。苏南大叔用大家能够接受的语言,描述一下这个oauth
过程。其实过程不难,就是和传统的思维不是很一样。所以理解上有些偏差。
这个时候,请求的是我这边的服务器地址。该地址,开始准备了三个参数,分别是client_id
/scope
/state
。
client_id
就是从github
上面申请到的那个appid
。scope
就是说你的应用会请求用户的那些数据,这个是会在登陆页面上展示的。state
是个随机数,用于数据验证,所以,这个值越随机越好。服务器准备好这些参数后,就将用户的请求导向到了github
的登陆验证页面,并带上三个参数。
github的oauth登陆的基本流程,oauth2.0原理解析(图3-2)
client_id
和scope
之后,会对授权进行验证如果当前用户没有登陆,那么显示登陆界面(登陆完成后,会回到授权检测逻辑)。如果登陆了,就检测client_id
和scope
,是否已经授权。授权通过的话,就进入第三步。如果没有通过,就显示对应的授权表单。
github的oauth登陆的基本流程,oauth2.0原理解析(图3-3)
github
服务器,授权检测通过,页面跳转如果检测通过,github
服务器会将服务器生成的一个code
,以及第一步中的state
传递回来。传递的途径是用户的浏览器,就是说,在用户的浏览器中,github
服务器进行了页面跳转。跳转到了我们在github
上设置好的 callback
地址。
callback
地址开始工作callback
地址,接收github
服务器返回的code
和state
参数。一方面,state
可以用于自身检验数据合法性,毕竟是自己服务器生成并传递的值。另外一方面,state
也将参与后续的服务器之间的通信。所以也是个凭证。所以,这个state
值绝对不可以是个固定的值,必须是个随机数。你懂的。
接收到的code
和state
(双方已知),再加上,双方服务器都已知的早期设定值client_id
/client_secret
/redirect_uri
。这五个要素组合到一起,用于到github
上面请求access_token
。
github
服务器处理access_token
请求github
的服务器,接收到:苏南大叔的服务器端的access_token
请求后,会对相关的数据进行检测。通过code
和state
来检测对应要请求的github
用户,是否真正授权了。如果是,则返回access_token
/scope
/token_typ
e这三个值给苏南大叔的服务器。
苏南大叔的服务器拿到access_token
/scope
/token_type
后,仅仅处理了access_token
,另外的两个值暂时没用。然后用这个access_token
去和github
的服务器做最后的一次交互。(看到“最后”这个词,是不是松了一口气....)去拿用户的基本资料。
github
服务器处理用户资料数据请求凭借自己颁发的access_token
,来返回对应用户的授权过的数据。
苏南大叔的服务器拿到github
的用户资料后,就剩下对用户进行绑定的过程了。 当前用户也许已经是网站的会员了,或者也许没有注册过。(苏南大叔的博客是没有注册途径的,所以,不可能有人已经是会员)。这个时候,会员绑定的逻辑就是大家自己决定的了。绑定成功之后,调用自己的方法,设置好当前用户的登陆状态,就可以了。
好了,基本上讲完了。市面上这么多oauth
的授权应用,基本上都大同小异。大家都可以按照这个思路进行编写。不过,至于国内的各大网站的oauth
,极其严格的审核制度,就不是苏南大叔能够帮上忙的了。
更多oauth
相关文章,请大家拿起鼠标,点击这里查看:https://newsn.net/tag/oauth/ 。
【github】秘籍文章入口,仅传授于有缘之人
github oauth
欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
《程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。
Original url: Access
Created at: 2018-10-29 13:22:01
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论