oauth — ответ об ошибке клиента PHP Guzzle / неверный запрос 400 Google OAuth2 Token

Запрос жадности

try {
$url = 'https://www.googleapis.com/oauth2/v1/tokeninfo?';

$client = new Client();
$request = $client->createRequest('GET', $url);

$query = $request->getQuery();
$query['access_token'] = $access_token;

$response = $client->send($request);

$json = $response->json();

if(!empty($json) && !isset($json['error'])) {
return ($json['audience']==GOOGLE_CLIENT_ID);
}

} catch(\Exception $e) {
echo $e->getMessage();
}

Ответ жадности

Client error response
[status code] 400
[reason phrase] Bad Request
[url] https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxx

Простой запрос CURL

$url = 'https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=xxxx';
$curl_handle=curl_init();
curl_setopt($curl_handle,CURLOPT_URL,$url);
curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, false); //disable SSL check
$json_response = curl_exec($curl_handle);
curl_close($curl_handle);
$response = json_decode($json_response);
return $response;

Простой ответ CURL

stdClass Object
(
[issued_to] => xxx-xxx.apps.googleusercontent.com
[audience] => xxx-xxx.apps.googleusercontent.com
[user_id] => xxx
[scope] => https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.me
[expires_in] => 3581
[access_type] => offline
)

Я не могу понять, что я делаю неправильно с Guzzle, так как вы можете видеть, что я получил успешный результат с помощью CURL, но получил ошибку Bad Request на Guzzle …. Есть идеи?

ОБНОВИТЬ:

Я выяснил, что жадность возвращает фактический ответ, когда код ответа равен 200 / OK, в противном случае это исключение при возврате жадности, и теперь я не могу понять, как получить реальный ответ в случае ошибки?

4

Решение

Я нашел решение использовать RequestException вместо Exception

try {
//Google oAuth2 Code
} catch(RequestException $e) {
$response = $e->getResponse()->json(); //Get error response body
}
3

Другие решения

Похоже, вы хотите установить исключения = ложь при настройке жрет. Смотрите аналогичный ответ здесь: Жрать: обрабатывать 400 плохих запросов

$guzzle_config = array(
'defaults' => array(
'debug' => false,
'exceptions' => false
)
);
0

По вопросам рекламы [email protected]