日常项目中经常会用到QQ授权登录或者微信授权登录,方便了用户,否则需要手机验证码等等的操作,授权登录只需要一键操作
OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版
第三方授权登录基本都使用的这个标准,经典最常用的一种授权模式:授权码模式
- 用户访问第三方应用
- 第三方应用请求用户授权
- 用户同意授权,并返回一个凭证(code)
- 第三方应用通过第二步的凭证(code)向授权服务器请求授权
- 授权服务器验证凭证(code)通过后,同意授权,并返回一个资源访问的凭证(Access Token)
- 第三方应用通过第四步的凭证(Access Token)向资源服务器请求相关资源
- 资源服务器验证凭证(Access Token)通过后,将第三方应用请求的资源返回
因为第三方都遵守这个标准,所以请求方式基本类似,可以进行封装
目前我已经集成好了QQ、微博、Github的授权登录,能够拿到用户信息
但是可能还是有一些地方没有考虑到,未做处理,后期再继续修改吧
同时我也提供了Demo去测试,Demo实例图如下:
安装
使用composer进行加载,使用如下命令:
composer require sy-records/oauth-login
或者手动安装,需要什么登录就引入什么登录文件,例如 test文件夹中 demo
使用
使用的话,也就十分简单了,实例化后调用方法即可,前提是配置好具体的参数,开启curl
扩展、session.auto_start
扩展
QQ授权登录
use Auth\QqConnect;
# https://connect.qq.com/manage.html#/ 创建应用
$appId = ''; # APP ID
$appKey = '';# APP Key
$callBackUrl = ''; # 授权回调地址
$qqAuth = new QqConnect($appId,$appKey,$callBackUrl);
# 授权登录页面
$qqAuth->qqLogin();
# 授权回调方法
$res = $qqAuth->qqCallBack();
var_dump($res); # 用户信息
微博授权登录
use Auth\WeiboConnect;
# http://open.weibo.com/apps/new?sort=web 创建网站应用
$appKey = ''; # 网站应用申请后的App Key
$appSecret = ''; # 网站应用申请后的App Secret
$callback = ''; # 授权回调地址
$weiboAuth = new WeiboConnect($appKey,$appSecret,$callback);
# 授权登录页面
$weiboAuth->weiboLogin();
# 授权回调方法
$res = $weiboAuth->weiboCallBack();
var_dump($res); # 用户信息
Github授权登录
use Auth\GithubConnect;
# https://github.com/settings/developers 创建OAuth App
$clientId = ''; # 创建OAuth App得到的Client ID
$clientSecret = ''; # 创建OAuth App得到的Client Secret
$callback = ''; # Authorization callback URL 回调地址
$githubAuth = new GithubConnect($clientId,$clientSecret,$callback);
# 授权登录页面
$githubAuth->githubLogin();
# 授权回调方法
$res = $githubAuth->githubCallBack();
var_dump($res); # 用户信息
就酱紫,直接使用就好了,拿到用户信息以后完成你的业务逻辑,项目地址:Github,如果帮助到你了,请给一个star 😛
大佬,我都看不懂怎么办!
@橘子书 好好做设计!
@沈唁 😛 就不!