laravel 5.5中的Passport Authedication Error

时间:2017-10-27 11:58:39

标签: laravel-5.5 guzzlehttp

Error creating resource: [message] fopen(http://127.0.0.1:8000/oauth/token): failed to open stream: HTTP request failed! [file] /var/www/html/local/api-sample-application/vendor/guzzlehttp/guzzle/src/Handler/StreamHandler.php [line] 324

尝试实施laravel passport身份验证时,我收到此错误。

这是我在routes / web.php内容中的代码:

Route::get('/redirect', function () {
$query = http_build_query([
    'client_id'     => '3',
    'redirect_uri'  => 'http://127.0.0.1:8000/oauth/callback',
    'response_type' => 'code',
    'scope'         => '',
]);

return redirect('http://127.0.0.1:8000/oauth/authorize?' . $query);

}); Route :: get('/ oauth / callback',function(){

$http = new GuzzleHttp\Client;

if (request('code')) {
    $response = $http->post('http://127.0.0.1:8000/oauth/token', [
        'form_params' => [
            'grant_type'    => 'authorization_code',
            'client_id'     => '3',
            'client_secret' => 'H1UQCKVRARwASEJLR4ugGjBHHvFy34SCzSJFqQLL',
            'redirect_uri'  => 'http://127.0.0.1:8000/oauth/callback',
            'code'          => request('code'),
        ],
    ]);

    return json_decode((string)$response->getBody(), TRUE);
} else {
    return response()->json(['error' => request('error')]);
}

});

当我点击此URL时,我收到此错误,无法生成令牌。

Error message screenshot

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,1天后我找到了原因......

由于PHP内置服务器是单线程的,因此请求服务器上的另一个URL将暂停第一个请求,并且它会超时。

因此,您无法在同一个线程中从localhost请求localhost。

您可以轻松查看,尝试'获取'来公共服务器主机,'http://www.example-host.com'..

选中此http://stackoverflow.com/a/25651196/916682