PHP Guzzle客户端错误响应/错误请求400 Google OAuth2令牌
狂饮的请求PHP Guzzle客户端错误响应/错误请求400 Google OAuth2令牌,php,oauth,google-plus,guzzle,bad-request,Php,Oauth,Google Plus,Guzzle,Bad Request,狂饮的请求 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; $res
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
简单卷曲请求
$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;
简单卷曲反应
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时得到了成功的结果,但在Guzzle上得到了错误的请求…有什么想法吗
更新:
我发现guzzle在响应代码为200/OK时返回实际响应,否则它返回guzzle异常。现在我不知道如何在出现错误时获得实际响应?在配置guzzle时,您似乎希望将异常设置为false。在这里可以看到类似的答案:
我发现解决方案使用了
RequestException
而不是Exception
try {
//Google oAuth2 Code
} catch(RequestException $e) {
$response = $e->getResponse()->json(); //Get error response body
}
在guzzle中,当您的
url
无效时会发生这种类型的错误。您在浏览器中测试过url吗?是的,正如我所说的一样,url和凭据在cURL中工作正常,但在使用guzzle时出错。这里的问题和仅guzzle相同。guzzle(v3.9)oauth2请求也存在同样的问题
try {
//Google oAuth2 Code
} catch(RequestException $e) {
$response = $e->getResponse()->json(); //Get error response body
}