Запрос жадности
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, в противном случае это исключение при возврате жадности, и теперь я не могу понять, как получить реальный ответ в случае ошибки?
Я нашел решение использовать RequestException
вместо Exception
try {
//Google oAuth2 Code
} catch(RequestException $e) {
$response = $e->getResponse()->json(); //Get error response body
}
Похоже, вы хотите установить исключения = ложь при настройке жрет. Смотрите аналогичный ответ здесь: Жрать: обрабатывать 400 плохих запросов
$guzzle_config = array(
'defaults' => array(
'debug' => false,
'exceptions' => false
)
);