【发布时间】:2018-02-06 18:58:29
【问题描述】:
我尝试在 Laravel Passport 上创建 oauth2 服务器并通过第三方应用程序对其进行测试。 Oauth 服务器使用 Laravel,客户端使用 Yii 框架。我无法修改客户端前端,我创建了一个路由 /api/oauth/login 将请求转发到 oauth 服务器:
public function actionOauthLogin()
{
$query = http_build_query([
'client_id' => '12',
'client_secret' => '',
'redirect_uri' => 'http://client.loc/api/oauth/callback',
'response_type' => 'code',
'scope' => '',
]);
return $this->redirect('http://oauth-server.loc/oauth/authorize?' . $query);
}
这个方法处理/api/oauth/callback 路由:
public function actionOauthCallback()
{
$http = new Client();
$response = $http->post('http://oauth-server.loc/oauth/token', [
'form_params' => [
'grant_type' => 'authorization_code',
'client_id' => '3',
'client_secret' => 'TJDyfygkuga45rtyfj8&65567Yhhgjjjj',
'redirect_uri' => 'http://client.loc/api/oauth/callback',
'code' => Yii::app()->request->getParamFromRequest('code'),
],
]);
return json_decode((string) $response->getBody(), true);
}
所有实现都像在文档中一样。但是当我打开 /api/oauth/login 时,将重定向转发到 oauth-server.loc/oauth/authorize?{params} 并且我看到一个 http 基本身份验证窗口。什么? Nginx 没有这样的设置。有人知道我做错了什么吗?请帮帮我。
【问题讨论】:
-
昨天我在 Yii (oauth2-client.thephpleague.com/providers/implementing) 上安装了 phpleague oauth2 客户端。但结果是一样的。
-
我遇到了完全相同的问题。你想出解决办法了吗? @epod
标签: php yii oauth laravel-5.3 laravel-passport