1

認証コードを数日取得しますが、テスト コードでアクセス/リフレッシュ トークンと交換しようとすると、常にHTTP 400 エラーが発生します。私は数日間 Google を使用していますが、まだ修正方法が見つかりません。誰でもそれを修正するのを手伝ってくれます、ありがとう。

<html>
<body>

<?php
$redirect_url = "http://.../callback_google.php";
$client_id=".....";
$client_secret=".....";
$code=$_GET['code'];
$url = 'https://accounts.google.com/o/oauth2/token?';
$postField = array ('grant_type=authorization_code',
                    'client_id='.urlencode($client_id),
                    'client_secret='.urlencode($client_secret),
                    'redirect_uri='.urlencode($redirect_url),
                    'code='.urlencode($code) );
$postField = implode('&', $postField);

$options = array(CURLOPT_URL => $url,
                 CURLOPT_HEADER => 1,
                 CURLOPT_RETURNTRANSFER => 1,
                 CURLOPT_USERAGENT => '',
                 CURLOPT_FOLLOWLOCATION => 1,
                 CURLOPT_VERBOSE => 1,
                 CURLOPT_POST => true,
                 CURLOPT_POSTFIELDS => http_build_query($postField) );

$ch = curl_init();
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
curl_close($ch);
print '<pre>' . print_r($result, true) . '</pre>';
?>

</body>
</html>

しかし、エラーメッセージが表示されます

HTTP/1.1 200 Connection established
Via: 1.1 PROXY
Connection: Keep-Alive
Proxy-Connection: Keep-Alive

HTTP/1.1 400 Bad Request
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Date: Fri, 09 Nov 2012 06:04:44 GMT
Content-Type: application/json
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked

JSONレスポンスは

{
  "error" : "invalid_request"
}

誰でも私がそれを解決するのを手伝ってくれました、ありがとう。

4

1 に答える 1

0

(コメントで回答された質問。コミュニティ wiki の回答に変換されました。回答がない質問を参照してください。ただし、コメントで問題が解決されました (またはチャットで拡張されました) )

OP は次のように書いています。

この問題は修正されました。これは配列が原因でしたhttp_build_query。に変更し $postField = 'grant_type=authorization_code&client_id='.urlencode($client_id). &client_secret='.urlencode($client_secret).'&redirect_uri='.urlencode($redirect_‌​url).'code='.urlencode($code);、関数呼び出しを削除しますhttp_build_query

于 2015-02-07T18:23:17.527 に答える