Laravel护照试图获取oauth /令牌。枪口一直挂着,也在其他枪口上打电话

问题描述 投票:0回答:1

[使用Laravel 5.8设置一个新项目,我还安装了Laravel Passport&Guzzle。使用php artisan在8000端口上创建了一个本地服务器。Postman能够在/ oauth / token上获得响应(但仅当主体为JSON时)。

[当我尝试通过控制器方法访问API时,我的浏览器返回500错误,并且日志中未显示任何错误。当我尝试通过路由将食人魔指向同一控制器方法时,邮递员不断加载,甚至需要强制关闭我的php进程。当我尝试使用Guzzle向API(另一条路线)发出get请求时,它也一直挂在邮递员手中。如果我直接在邮递员中定位路线,则会显示内容。 Axios还会返回所需的内容。

$http = new Client();

$result = $http->post('http://localhost:8000' . '/oauth/token', [
    'form_params' => [
        'grant_type' => 'password',
        'client_id' => config('app.api_client'),
        'client_secret' => config('app.api_secret'),
        'username' => $user->email,
        'password' => $password,
    ],
]);

我也尝试过

$http = new Client();

$result = $http->post('/oauth/token', [
    'form_params' => [
        'base_uri' => config('app.url'),
        'headers' => [
            'Accept' => 'application/json',
        ],
        'grant_type' => 'password',
        'client_id' => config('app.api_client'),
        'client_secret' => config('app.api_secret'),
        'username' => $user->email,
        'password' => $password,
    ],
]);

而且我还尝试了带有标头的第一个版本,并且都标有scope => '',但没有运气。

有人知道我在做什么错吗?

laravel postman laravel-passport laravel-valet
1个回答
0
投票

Web服务器仅运行一个单线程进程,因此,如果请求被阻止,PHP应用程序将停顿。

您可以执行此solution

在对其自身进行调用时,该线程被阻塞,等待其自己的回复。解决方案是将提供的应用程序和使用的应用程序分离到各自的实例中,或者在诸如Apache或nginx的多线程Web服务器上运行它。

或者,如果您正在寻找一种快速修复程序来测试您的更新-您可以通过打开两个命令提示符来完成此操作。第一个将运行php artisan serve(本地我的默认端口是8000,并且您将在http://localhost:8000上运行站点)。第二个将运行php artisan serve --port 8001

然后您将发布请求更新为:

$result = $http->post('http://localhost:8001' . '/oauth/token', [ 'form_params' => [ 'grant_type' => 'password', 'client_id' => config('app.api_client'), 'client_secret' => config('app.api_secret'), 'username' => $user->email, 'password' => $password, ], ]);

这将在测试期间有所帮助,直到您能够在服务器或本地虚拟主机上执行所有操作为止。

© www.soinside.com 2019 - 2024. All rights reserved.