0

私はこの問題に2日間取り組んでおり、Googleコードとstackoverflowの下を調べてみましたが、それでも答えを見つけることができます.

私の問題は、Google アナリティクス API を試すと、「OAuth2 トークンの更新中にエラーが発生しました。メッセージ: '{ "error" : "invalid_grant" }'」が表示されることです。

しかし、奇妙な部分は、それが機能する場合があることです。めったにありませんが、更新して試し続けると、出力されます。

私が見つけた唯一のことは、更新トークンの制限を超えた可能性があるということです

誰かが私を助けてくれたり、正しい方向に向けてくれるなら、私のコードが添付されています。

ありがとう!

<?php
session_start();
require_once 'Google_Client.php';
require_once 'Google_AnalyticsService.php';
require_once 'config.php';


$keyFile = 'key.p12';


$client = new Google_Client();
$client->setApplicationName("test");
if (isset($_SESSION['token'])) {
   $client->setAccessToken($_SESSION['token']);
   }
 $client->setAssertionCredentials(new Google_AssertionCredentials(
GOOGLE_SERVICE_ACCOUNT,
array('https://www.googleapis.com/auth/analytics.readonly'),
file_get_contents($keyFile))
 );
 $client->setClientId(GOOGLE_CLIENT_ID);
 $client->setAccessType('offline');
 $client->setUseObjects(true);
 $service = new Google_AnalyticsService($client);
 try {
     $results = $service->data_ga->get(
    'ga:44444444',
    date('Y-m-d', strtotime('-30 days '.date('Y-m-d', strtotime('-1 day '.date('Y-m-    d'))))),
    date('Y-m-d', strtotime('-1 day '.date('Y-m-d'))),
    'ga:visits,ga:newVisits',
    /*array(
        'dimensions' => 'ga:source,ga:keyword',
        'sort' => '-ga:visits,ga:keyword',
        'filters' => 'ga:medium==organic',
        'max-results' => '25'
    )*/
    array('dimensions' => 'ga:date')
  );
 } catch (Google_ServiceException $e) {
 // echo $e->getMessage();
  }
 if ($client->getAccessToken()) {
    $_SESSION['token'] = $client->getAccessToken();
   }

   $dateParsePattern = '/"Date.parse\(\\\"((\d{4})-(\d{2})-(\d{2})) UTC\\\"\)"/';
  $dateParseReplacement = 'Date.parse("$1 UTC")';
  $allVisitsItems = array();
  $newVisitorsItems = array();
 if ($results && count($results->getRows()) > 0) {
    foreach ($results->getRows() as $row) {
    $date = 'Date.parse("'.date("Y-m-d", strtotime($row[0])).' UTC")';
    $allVisitsItems[] = array($date, intval(htmlspecialchars($row[1], ENT_NOQUOTES)));
    $newVisitorsItems[] = array($date, intval(htmlspecialchars($row[2], ENT_NOQUOTES)));
}
}
  header('Content-Type: application/json');
 ?>

<?php echo preg_replace($dateParsePattern, $dateParseReplacement, json_encode($allVisitsItems)) ?>

編集 - date('l jS \of FY h:i:s A'); をエコーし​​たとき、NTP ではありません。合いました。

4

1 に答える 1

0

以下は出力を生成するために機能します - PHP 5.3 以降を実行していることを確認してください。

<?php
require_once './src/Google_Client.php';
require_once './src/contrib/Google_AnalyticsService.php';

 $path_to_keyfile = '.p12';
 $service_account_email = '7@developer.gserviceaccount.com';
 $client_id = '7.apps.googleusercontent.com';
 $analytics_profile_id = 'ga:IN URL OF ANALYTICS';

 $client = new Google_Client();
 $client->setApplicationName("API TEST");
 $client->setAssertionCredentials(
new Google_AssertionCredentials(
    $service_account_email,
    array('https://www.googleapis.com/auth/analytics.readonly'),
    file_get_contents($path_to_keyfile)
)
);
$client->setClientId($client_id);
$client->setAccessType('offline_access');

$service = new Google_AnalyticsService($client);

 $from = date('Y-m-d', strtotime('-30 days '.date('Y-m-d', strtotime('-1 day '.date('Y-m-d'))))); // 30 days
 $to = date('Y-m-d', strtotime('-1 day '.date('Y-m-d'))); // yesterday

  $dateParsePattern = '/"Date.parse\(\\\"((\d{4})-(\d{2})-(\d{2})) UTC\\\"\)"/';
  $dateParseReplacement = 'Date.parse("$1 UTC")';
   $allVisitsItems = array();
  $newVisitorsItems = array();

try {
$data = $service->data_ga->get(
    //
    $analytics_profile_id,
    $from,
    $to,
    'ga:visits,ga:newVisits',
    array('dimensions' => 'ga:date')
);

if($data && $data['totalResults'] > 0) {
    foreach($data['rows'] as $row) {
        $date = 'Date.parse("'.date("Y-m-d", strtotime($row[0])).' UTC")';
        $allVisitsItems[] = array($date, intval(htmlspecialchars($row[1], ENT_NOQUOTES)));
        $newVisitorsItems[] = array($date, intval(htmlspecialchars($row[2], ENT_NOQUOTES)));
    }
}

header('Content-Type: application/json');
?>

<?php echo preg_replace($dateParsePattern, $dateParseReplacement, json_encode($allVisitsItems)) ?>

<?php echo preg_replace($dateParsePattern, $dateParseReplacement, json_encode($newVisitorsItems)) ?>

<?php
 } catch(Exception $e) {
echo 'There was an error : - ' . $e->getMessage();
 }
于 2013-03-12T14:00:23.607 に答える