### OAuth2.0流程:参照github
(1)用户访问客户端,后者将前者导向认证服务器:
* response\_type:表示授权类型,必选项,此处的值固定为"code"
* client\_id:表示客户端的ID,必选项
* redirect\_uri:表示重定向URI,可选项
* scope:表示申请的权限范围,可选项
* state:表示客户端的当前状态,可以指定任意值,认证服务器会原封不动地返回这个值。
https://gitee.com/oauth/authorize?client_id=xxx&redirect_uri=rediurl&response_type=code
https://github.com/login/oauth/authorize?client_id=xxx&scope=user:email
(2)认证服务器重定向到redirect_uri,并返回参数code
(3)应用服务器获取到code,并把账号相关信息POST请求认证服务器
* client_id:用户ID
* client_secret:用户秘钥
* code:接收到的code码
(4)认证服务器返回access_token,再次用得到的token请求
* github:access_token=021118b849fb88a68c805fd9c22699c4017xxx&scope=user%3Aemail&token_type=bearer
(5)得到最终需要的数据:
```
{
"login":"linzening",
"id":29197457,
"node_id":"MDQ6VXNlcjI5MTk3NDU3",
"avatar_url":"https://avatars2.githubusercontent.com/u/29197457?v=4",
"gravatar_id":"",
"url":"https://api.github.com/users/linzening",
"html_url":"https://github.com/linzening",
"followers_url":"https://api.github.com/users/linzening/followers",
"following_url":"https://api.github.com/users/linzening/following{/other_user}",
"gists_url":"https://api.github.com/users/linzening/gists{/gist_id}",
"starred_url":"https://api.github.com/users/linzening/starred{/owner}{/repo}",
"subscriptions_url":"https://api.github.com/users/linzening/subscriptions",
"organizations_url":"https://api.github.com/users/linzening/orgs",
"repos_url":"https://api.github.com/users/linzening/repos",
"events_url":"https://api.github.com/users/linzening/events{/privacy}",
"received_events_url":"https://api.github.com/users/linzening/received_events",
"type":"User",
"site_admin":false,
"name":"linzening",
"company":null,
"blog":"",
"location":null,
"email":null,
"hireable":null,
"bio":null,
"public_repos":15,
"public_gists":0,
"followers":0,
"following":1,
"created_at":"2017-06-05T10:19:49Z",
"updated_at":"2019-02-28T11:26:10Z"
}
```
>[info] 参考文档:`http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html`
- 文档目录
- 一、PHP笔记
- 安装及部署工具
- Oneinstack使用笔记
- LNMP使用笔记
- Composer使用笔记
- Composer包制作和应用
- Windows下的PHP
- Docker安装MySQL
- PHP知识汇总
- PHP8.0特性
- PHP杂项总结
- empty测试
- 阿里云SDK使用文档
- Swoole学习笔记
- PHP系统操作函数
- PHP系统探针
- PHPExcel导入导出数据
- PHP正则
- 数组函数
- Workerman小记
- trait
- 抽象类
- MVC设计模式
- PHP连接Access数据库
- guzzlehttp
- PHP加密方法
- PHP框架集合
- ThinkPHP
- YII
- Laravel使用笔记
- easyswoole
- TP5.1的正确使用方式
- ThinkPHP6.0队列
- PHP相关技术
- JWT
- 支付笔记
- PHP新写法
- PHP常用函数
- 二、运维笔记
- CentOS
- 常用命令
- 文件操作类
- 问题记录
- iptables
- 压缩解压命令
- CentOS8笔记
- Linux常用信息查看命令
- curl
- dig&nslookup
- 运维技术
- DNS体系
- CDN体系
- Haproxy负载均衡
- Ansible笔记
- crontab
- LVS简单理解
- 日志分析
- Python系统监控
- Linux系统监控
- 负载均衡方法
- Shell脚本示例
- ntp同步时间
- 宝塔运维
- Goaccess的使用
- Supervisor使用
- 用户管理
- RSA证书登录
- 网络技术
- DHCP
- IPv6学习
- 网络技术笔记
- 抓包笔记
- IPv4
- TCP
- IP基础知识总结
- IPv6地址库
- IPv6地址列表
- 云产品
- 对象存储大比拼
- 静态站点部署方案
- Apache配置总结
- Docker笔记
- 三、Web体系
- HTTP
- HTTP头字段总结
- head头部细讲
- 跨域请求
- HTTPS
- HTTP状态码表
- 关于IP的HTTP头部
- HTTP Method 详细解读
- HTTP的表单提交方式
- Vue
- Vue学习笔记
- ElementUI笔记
- Vue项目部署
- vue+layui
- vue-resource的使用
- axios的使用
- vue-element-admin
- Electron打包Vue
- Javascript
- JavaScript遍历json总结
- jQuery方法汇总
- WebSocket
- 案例:使用JavaScript获取用户内网IP地址
- JS导出Excel
- 前端笔记
- Viewer.js
- CSS笔记
- LayUI使用笔记
- 大屏系统
- 前端大屏系统
- 大屏预览
- 大屏HTML源码
- 常见Web攻击
- OAuth2.0
- 综合知识
- 四、数据库
- MySQL
- MySQL数据库备份
- MySQL用户管理
- JSON字段查询
- mysqldump导入导出数据库总结
- MySQL数据类型
- MySQL数据库案例总结
- MySQL8.0.11安装笔记
- Binlog笔记
- Navicat的使用
- MySQL常用内置函数
- Windows安装mysql8.0
- 存储过程
- 字符集
- MySQL主从复制
- PHPEnv一键安装MySQL
- Redis
- Redis笔记
- Redis在Windows的使用
- phpredis教程
- Redis事务
- redis集群
- Redis主从复制
- MongoDB
- MongoDb汇总
- 遇到问题
- 备份与还原
- 语法
- MongoDB安装
- Postgresql
- 安装
- PG笔记
- PG在ThinkPHP中使用
- PG数据库和MySQL数据库对比
- Elasticsearch
- 查询
- 数据格式
- 五、Nginx
- Nginx笔记
- 反向代理&负载均衡
- Nginx配置文件全面解析
- https/ssl配置
- 日志切割
- Openresty笔记
- 变量解释
- Tengine
- Nginx语法
- 文件服务器
- 六、其他语言
- Node.js
- Express
- 安装问题
- pm2的使用
- Python
- Tornado
- pip的使用
- Scrapy
- 多进程
- Python导出本地Excel
- Requests库
- Socket库
- Django
- 问题记录
- Python虚拟环境
- Fabric库
- Flask
- MongoDB的使用
- uwsgi部署
- Gunicorn部署
- Flask的虚拟环境
- Java
- JDK安装
- JSP页面
- JSP项目部署
- 学习计划
- Java学习记录
- Java相关状态码
- Jfinal笔记
- Websocket
- 客户端JavaScript
- Workman
- Swoole
- .NET
- WPF
- PowerShell
- 文件操作
- Interop.Excel
- DotNet笔记
- Go
- beego
- gin
- 备份MySQL数据库至OSS
- 对象存储比较更新
- 使用Go做一个静态文件服务器
- Ruby
- 七、杂项
- 其他笔记
- 义务劳动系统操作说明
- USB电流笔记
- Git使用笔记
- git常用命令列表
- git码云配置hook钩子实现自动部署
- 搭建git服务器
- 命令手册
- git钩子
- 自建Git服务器配置自动部署
- 算法汇总
- 时间复杂度和空间复杂度的简单讲解
- 加密算法
- 测试
- AB测试
- OFFICE
- Excel
- 数学笔记
- 对数
- 指数
- 三角函数
- 我用latex写公式
- 博客生成器
- markdown转html
- Jekyll
- Hugo
- 附:测试四大git-pages
- Hexo
- svn使用简记
- 正则表达式
- 草稿
- 个人成长篇
- 自创JS加密PHP解密程序
- 有趣的github项目
- 编辑器使用习惯
- 电脑选购指南
- 服务器重装备忘录