sujun/oauthsdk
Composer 安装命令:
composer require sujun/oauthsdk
包简介
史上最方便集成第三方登录插件
README 文档
README
OauthSDK是什么?
是第三方登录SDK。︿( ̄︶ ̄)︿
安装
通过composer,这是推荐的方式,可以使用composer.json 声明依赖,或者直接运行下面的命令。
composer require "sujun/oauthsdk": "v1.0.1"
放入composer.json文件中
"require": { "sujun/oauthsdk": "v1.0.1" }
然后运行
composer update
使用方式
分三步走。
1、登录处放置第三方登录入口
传type变量,根据此变量判断是QQ、微博、还是微信登录。 如下:login.html 页面
<a href="/login?type=qq">QQ登录</a>
<a href="/login?type=wechat">微信登录</a>
<a href="/login?type=sina">新浪登录</a>
2、生成第三方登录授权地址
如下:login.php 页面
use OauthSDK\Oauth;
try {
if (!in_array($_GET['type'], ['qq', 'wechat', 'sina'])) {
throw new \Exception("暂不支持{$_GET['type']}方式登录", 500);
}
$sns = Oauth::getInstance($_GET['type'], array(
//腾讯QQ登录配置
'QQ' => array(
'APP_KEY' => '***', //应用注册成功后分配的 APP ID
'APP_SECRET' => '***', //应用注册成功后分配的KEY
'CALLBACK' => '/callback.php?type=qq', //回调URL
),
//新浪微博配置
'SINA' => array(
'APP_KEY' => '***',
'APP_SECRET' => '***',
'CALLBACK' => '/callback.php?type=sina',
),
//腾讯微信配置
'WECHAT' => array(
'APP_KEY' => '***',
'APP_SECRET' => '***',
'CALLBACK' => '/callback.php?type=wechat',
),
));
//跳转到授权页面
header('Location: ' . $sns->getRequestCodeURL());
} catch (\Exception $e) {
echo $e->getMessage();
header('Location: /login' . );
}
3、设置回调地址
use OauthSDK\Oauth;
try {
$type = $_GET['type'];
$code = $_GET['code'];
if (!in_array($type, ['qq', 'wechat', 'sina'])) {
throw new \Exception("参数错误", 500);
}
if(empty($type) || empty($code)) {
throw new \Exception('参数错误~',500);
}
$sns = Oauth::getInstance($type, array(
//腾讯QQ登录配置
'QQ' => array(
'APP_KEY' => '***', //应用注册成功后分配的 APP ID
'APP_SECRET' => '***', //应用注册成功后分配的KEY
'CALLBACK' => '/callback.php?type=qq', //回调URL
),
//新浪微博配置
'SINA' => array(
'APP_KEY' => '***',
'APP_SECRET' => '***',
'CALLBACK' => '/callback.php?type=sina',
),
//腾讯微信配置
'WECHAT' => array(
'APP_KEY' => '***',
'APP_SECRET' => '***',
'CALLBACK' => '/callback.php?type=wechat',
),
));
$tokenArr = $sns->getAccessToken($code, []);
$openid = $tokenArr['openid'];
$token = $tokenArr['access_token'];
/*
$checkData = select * from where openid=$tokenArr['openid'] and type_name = $type;
if ($_check_data) {
//之前绑定
//跳至登录
} */
//获取当前登录用户信息
if ($openid) {
$userinfo = $sns->getUserInfo();
//处理......
} else {
throw new \Exception("系统出错,请稍后再试!", 500);
}
} catch (\Exception $e) {
echo $e->errorMessage();
exit;
}
至此完成第三方登录。很多人做法是用绑定的形式,即必须要有本站账号,这时要建一个表存着Openid关系。 表设置可如下:
DROP TABLE IF EXISTS `oauth_login`;
CREATE TABLE `oauth_login` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) DEFAULT NULL COMMENT '本站用户',
`openid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '第三方用户id',
`unionid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '微信多平台唯一',
`type_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '类型:qq、wechat、sina,
`access_token` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '访问令牌',
`param` text COLLATE utf8_unicode_ci COMMENT '返回参数',
`create_time` datetime DEFAULT NULL,
`status` tinyint(1) NOT NULL COMMENT '0:正常,1:删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci COMMENT='第三方绑定登录用户表';
sujun/oauthsdk 适用场景与选型建议
sujun/oauthsdk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 372 次下载、GitHub Stars 达 3, 最近一次更新时间为 2017 年 06 月 05 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「QQ登录」 「微信登录」 「微博登录」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 sujun/oauthsdk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 sujun/oauthsdk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 sujun/oauthsdk 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
统计信息
- 总下载量: 372
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 3
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-06-05