刷新OAuth2令牌时出错{“error”:“invalid_grant”}

时间:2014-05-11 07:38:07

标签: google-api-php-client

请帮我理解错误。

API

Google Api PHP v3,key.p12是.zip集合API中的文件(或者我找到它的位置?)

我用xxxxxxxxxx

屏蔽了我的数据

对不起我的英语

gaphp.php

<?php

      require_once 'Google/Client.php';
      require_once 'Google/Service/Analytics.php';

      $client_id = 'xxx-xxx.apps.googleusercontent.com';
      $service_account_name = 'xxx-xxx@developer.gserviceaccount.com';
      $keyfile = 'key.p12';
      $redirect_url = 'http://example.com/service/ga/gaphp.php';
      $client_secret = 'xxxxxxxxxxxxxxxxxxxxx';

      // Initialise the Google Client object
      $client = new Google_Client();
      $client->setApplicationName('My application');
      $client->setRedirectUri($redirect_url);
      $client->setClientSecret($client_secret);

      $client->setAssertionCredentials(
              new Google_Auth_AssertionCredentials(
                  $service_account_name,
                  array('https://www.googleapis.com/auth/analytics'),
                  file_get_contents($keyfile)
              )
      );

      // Get this from the Google Console, API Access page
      $client->setClientId($client_id);
      $client->setAccessType('offline_access');
      $analytics = new Google_Service_Analytics($client);

      // We have finished setting up the connection,
      // now get some data and output the number of visits this week.

      // Your analytics profile id. (Admin -> Profile Settings -> Profile ID)
      $analytics_id   = 'ga:xxxxxx';
      $lastWeek       = date('Y-m-d', strtotime('-1 week'));
      $today          = date('Y-m-d');

      try {
          $results = $analytics->data_ga->get($analytics_id, $lastWeek, $today,'ga:visits');
          echo '<b>Number of visits this week:</b> ';
          echo $results['totalsForAllResults']['ga:visits'];
      } catch(Exception $e) {
          echo 'There was an error : - ' . $e->getMessage();
      }

?>

错误

There was an error : - Error refreshing the OAuth2 token, message: 'Protection: 1; mode=block Server: GSE Alternate-Protocol: 443:quic Transfer-Encoding: chunked { "error" : "invalid_grant" }'

2 个答案:

答案 0 :(得分:2)

我昨天让我的分析工作了一个服务帐户 - 所以我可以帮忙。在控制台https://console.developers.google.com/project中,您可以选择项目并转到“APIS&amp; AUTH”。确保已启用analytics API。并确保您有服务帐户“凭据”。确保为您的Google Analytics(分析)属性授予服务帐户电子邮件地址权限。您还需要获取服务帐户的P12密钥文件,并在服务器上提供该密钥文件。我实际上使用了$ key_file_location变量的完整文件路径。

我在GitHub上使用了这段代码:https://github.com/google/google-api-php-client/blob/master/examples/service-account.php

示例适用于Books API - 因此只需将“Books”替换为“Analytics”,将“books”替换为“analytics”。填写您的服务帐户凭据,并记住将您的服务帐户电子邮件添加到您的Google Analytics(分析)属性。

答案 1 :(得分:0)

您只需确认您的服务帐户电子邮件ID与google analytics帐户相关联,并拥有相应的权限。

第二件事是确保.P12文件是在编译完上述步骤后生成的。