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时,我收到此错误,无法生成令牌。
答案 0 :(得分:0)
我遇到了同样的问题,1天后我找到了原因......
由于PHP内置服务器是单线程的,因此请求服务器上的另一个URL将暂停第一个请求,并且它会超时。
因此,您无法在同一个线程中从localhost请求localhost。
您可以轻松查看,尝试'获取'来公共服务器主机,'http://www.example-host.com'..