最近公司要对接天猫精灵开放平台,接入智能家居,于是研究了OAuth2.0授权协议,踩坑记录就不写了,基于TP6搭建了一套OAuth2.0服务端,只有一个丑陋的登录界面,别介意,希望给能用到的朋友一个参考
TP6 OAuth2.0 =============== > 运行环境要求PHP7.1+。 ## 安装 1.gitee clone 代码 [仓库地址](https://gitee.com/bokly/oauth2.0.git)
git clone https://gitee.com/bokly/oauth2.0.git
cd oauth2.0
2.composer 安装TP等依赖包
composer install
3.创建数据库 oauth,已有数据库省略此步 4.修改根目录中.env,配置数据库连接信息 5.think 命令创建表,添加数据
//已有数据库,已有 user 表,可删除 database/migrations/xxxx_user.php 文件
php think migrate:run
//已有数据库,已有 user 表,可删除 database/seeds/XxxUser.php 文件
php think seed:run
## 已有数据库的看下面6.7步骤 6.修改配置文件 config/database.php
'oatuh_user_table' => 'user表名'
7.重写 app/api/model/OAuthModel.php 加密验证规则
public function hashPassword($password)
{
return parent::hashPassword($password); // TODO: 如果有自己的加密规则,重写此方法
}
public function checkPassword($user, $password)
{
return parent::checkPassword($user, $password); // TODO: 如果有自己的加密规则,重写此方法
}
8.配置域名 xxx.com 指向 public/api.php 9.修改 oauth_clients 表 redirect_uri 为你配置的域名 10.访问 xxx.com?authorize?redirect_uri=http://xxx.com&client_id=testclient&response_type=code&state=1 11.输入 用户名 test, 密码 123456,登录,跳转到 redirect_uri,地址栏有code //已有用户数据的重写验证规则后,填写自有用户数据 12.Postman 或者其他工具POST请求 http://xxx.com/token
grant_type:authorization_code
client_id:testclient
client_secret:testpass
code:33339de0befe7847645d303ef9df23cb16dbc53e
redirect_uri:http://xxx.com
//测试时如有提示code过期("The authorization code has expired"),可修改 config/database.php auth_code_lifetime 的值,测试完成后修改为30