最近公司要对接天猫精灵开放平台,接入智能家居,于是研究了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