Я пытаюсь следовать учебнику Вот
используя Satellizer и angularjs в качестве внешнего интерфейса и Laravel & Жрать 6 для бэк-энда с социальной аутентификацией. У меня проблема с использованием Guzzle для запроса информации о профиле пользователя: вот мой php-код в моем контроллере:
$accessTokenUrl = 'https://accounts.google.com/o/oauth2/token';
$peopleApiUrl = 'https://www.googleapis.com/plus/v1/people/me/openIdConnect';
$params = [
'code' => $request->input('code'),
'client_id' => $request->input('clientId'),
'client_secret' => 'my-client-secret',
'redirect_uri' => $request->input('redirectUri'),
'grant_type' => 'authorization_code',
];
$client = new GuzzleHttp\Client();
$accessTokenResponse = $client->post($accessTokenUrl, ['form_params' => $params]);
$accessToken = json_decode($accessTokenResponse->getBody()->getContents(),true)['access_token'];
try {
// $profileResponse = $client->get($peopleApiUrl, ['header' => ['Authorization' => 'Bearer ' . $accessToken,]]); -->not working
$profileResponse = $client->get($peopleApiUrl,['oauth_token'=>$accessToken]);
} catch (RequestException $e) {
return response()->json($e);
}
Я не могу подключиться, чтобы получить профиль пользователя и сообщение об ошибке:
ClientException in Middleware.php line 69: Client error: 403
in Middleware.php line 69
at Middleware::GuzzleHttp\{closure}(object(Response)) in Promise.php line 199
at Promise::callHandler('1', object(Response), array(object(Promise), object(Closure), null)) in Promise.php line 152
at Promise::GuzzleHttp\Promise\{closure}() in TaskQueue.php line 60
at TaskQueue->run() in CurlMultiHandler.php line 96
at CurlMultiHandler->tick() in CurlMultiHandler.php line 123
at CurlMultiHandler->execute(true) in Promise.php line 240
at Promise->invokeWaitFn() in Promise.php line 217
at Promise->waitIfPending() in Promise.php line 261
at Promise->invokeWaitList() in Promise.php line 219
at Promise->waitIfPending() in Promise.php line 62
.......
У кого-нибудь возникла такая же проблема и нашли способ ее исправить? пожалуйста помоги.
Благодарю.
Для тех, кто имеет ту же проблему, пытаясь следовать примеру Satellizer для Laravel и php. Я изменяю URL API Google (из документа) и теперь могу получить информацию о профиле пользователя.
$peopleApiUrl = 'https://www.googleapis.com/oauth2/v3/userinfo'; // works with this link
ссылка для примера может быть для более старой версии.
Других решений пока нет …