1

アカウントに Google アナリティクス API を使用しようとしています。最初に、オフライン リフレッシュ トークンを使用してアプリケーション アクセスを許可します。トークンを更新しようとすると、「無効な付与」エラーが発生します。PHPクライアントライブラリと手動でcurlの両方を更新しようとしました。

これはcurlで手動です:

$oauth2token_url = "https://accounts.google.com/o/oauth2/token";
    $clienttoken_post = array(
    "client_id" => 'xxxxxxxx-d28qutrse5bvaf7n4a37qgs5ieijvp9n.apps.googleusercontent.com',
    "client_secret" => 'xxxxxxxxxxxxx');

        $clienttoken_post["refresh_token"] = $refresh_token;
        $clienttoken_post["grant_type"] = "refresh_token";

    $curl = curl_init($oauth2token_url);

    curl_setopt($curl, CURLOPT_POST, true);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $clienttoken_post);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $json_response = curl_exec($curl);
    curl_close($curl);

    $authObj = json_decode($json_response);

    print_r($authObj);


    exit();

simple.php の例を使用して、以前の呼び出しで取得した更新トークン:

require_once '../../src/apiClient.php';
require_once '../../src/contrib/apiAnalyticsService.php';
session_start();

$client = new apiClient();
$client->setApplicationName("Google Analytics PHP Starter Application");

// Visit https://code.google.com/apis/console?api=analytics to generate your
// client id, client secret, and to register your redirect uri.
 $client->setClientId('xxxxxxxxx-d28qutrse5bvaf7n4a37qgs5ieijvp9n.apps.googleusercontent.com');
 $client->setClientSecret('xxxxxx');
 $client->setRedirectUri('https://www.xxxxxxxxxx.org/oauth2callback/google-api-php-client/examples/analytics/simple.php');
 $client->setDeveloperKey('xxxxxxx');



if (isset($_GET['logout'])) {
  unset($_SESSION['token']);
}

if (isset($_GET['code'])) {
  $client->authenticate();
  $_SESSION['token'] = $client->getAccessToken();
  header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
}

if (isset($_SESSION['token'])) {
//    echo $_SESSION['token'];
  $client->setAccessToken($_SESSION['token']);
}
echo $client->getAccessToken()
4

2 に答える 2

5

誰かが興味を持っているなら、私は数時間後にようやくそれを解決しました:

私はoauthプレイグラウンドに行きました:右側のhttps://code.google.com/oauthplayground 、設定ボタンがあります。[独自のOAuth資格情報を使用する]を選択しました。そこから更新トークンを取得しましたが、問題なく動作します。

于 2012-06-11T10:35:10.433 に答える
1

他の誰かがこの問題に遭遇した場合...

同じ投稿リクエストが最初は機能せず、その後は機能するという問題がありました。

私たちにとって、Google は iat 時間に非常にうるさいように見えました。そこから 5 分引いてみてください。

于 2012-08-03T21:40:46.417 に答える