2016-08-04 122 views
0

我試圖用PHP編寫代碼,它將連接到我的Google Analytics帳戶,從那裏提取數據,然後我需要在代碼上處理它 - 插入到SQL表中等使用PHP連接到Google AnalyticsAPI

這是我下載的文件夾:我用這個谷歌指南https://github.com/google/google-api-php-client/releases(google-api-php-client-2.0.2.zip)

https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/web-php
這實際上是通過訪問API一個URL,所以我做了一些調整,以便在本地處理數據(例如刷新令牌等)。

這是我的代碼:

<?php 

define ("API_Key","MY_API_KEY"); 
define ("oAuth_Key","MY_oAUTH_KEY"); 

define ("refreshTokenKey","MY_REFRESH_TOKEN"); 
define('STORE_ON_DISK', true, true); 

// Load the Google API PHP Client Library. 
require_once dirname(__FILE__) . '/../Analytics/google-api-php-client-2.0.2/vendor/autoload.php'; 

session_start(); 

$client = new Google_Client(); 
$client->setApplicationName("PrsstoAnalytics"); 
$client->setAuthConfigFile(dirname(__FILE__) . '/client_secrets.json'); 
$client->addScope(Google_Service_Analytics::ANALYTICS_READONLY); 
$client->setAccessType('offline'); 

$client->refreshToken(refreshTokenKey); 


//---------------------------------------------------------------------------------------------------------------------- 
// Create an authorized analytics service object. 
$analytics = new Google_Service_AnalyticsReporting($client); 

// Call the Analytics Reporting API V4. 
$response = getReport($analytics); 

// Print the response. 
printResults($response); 

function getReport(&$analytics) { 

    // Replace with your view ID. E.g., XXXX. 
    $VIEW_ID = "MY_VIEW_ID"; 

    // Create the DateRange object. 
    $dateRange = new Google_Service_AnalyticsReporting_DateRange(); 
    $dateRange->setStartDate("7daysAgo"); 
    $dateRange->setEndDate("today"); 

    // Create the Metrics object. 
    $sessions = new Google_Service_AnalyticsReporting_Metric(); 
    $sessions->setExpression("ga:sessions"); 
    $sessions->setAlias("sessions"); 

    // Create the ReportRequest object. 
    $request = new Google_Service_AnalyticsReporting_ReportRequest(); 
    $request->setViewId($VIEW_ID); 
    $request->setDateRanges($dateRange); 
    $request->setMetrics(array($sessions)); 
    $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); 
    $body->setReportRequests(array($request)); 
    return $analytics->reports->batchGet($body); 
} 

function printResults(&$reports) { 
    for ($reportIndex = 0; $reportIndex < count($reports); $reportIndex++) { 
     $report = $reports[ $reportIndex ]; 
     $header = $report->getColumnHeader(); 
     $dimensionHeaders = $header->getDimensions(); 
     $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries(); 
     $rows = $report->getData()->getRows(); 

     for ($rowIndex = 0; $rowIndex < count($rows); $rowIndex++) { 
      $row = $rows[ $rowIndex ]; 
      $dimensions = $row->getDimensions(); 
      $metrics = $row->getMetrics(); 
      for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) { 
       print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n"); 
      } 

      for ($j = 0; $j < count($metricHeaders) && $j < count($metrics); $j++) { 
       $entry = $metricHeaders[$j]; 
       $values = $metrics[$j]; 
       print("Metric type: " . $entry->getType() . "\n"); 
       for ($valueIndex = 0; $valueIndex < count($values->getValues()); $valueIndex++) { 
        $value = $values->getValues()[ $valueIndex ]; 
        print($entry->getName() . ": " . $value . "\n"); 
       } 
      } 
     } 
    } 
} 

但我測試腳本,這是錯誤我得到: enter image description here

有誰有任何想法,爲什麼我不能connext的API?

我在做什麼錯在我的連接?我的證件不正確? 我錯過了某種關鍵嗎? 我非常感謝任何幫助。

謝謝!

回答

2

我一直在自己的工作。我不得不進入API管理器(https://console.developers.google.com/apis),創建一個項目,創建一個服務帳戶(這就是像這樣構建後端分析服務的帳戶),並生成憑證。這將會給你,你需要在你的代碼鏈接到一個以.json文件:$client->setAuthConfigFile(dirname(__FILE__) . '/{you-credential-file}.json');

在憑據文件,你會發現在JSON場「client_email」服務帳戶的電子郵件地址。您需要訪問analytics.google.com並轉到「管理」頁面,添加該地址並閱讀&分析權限。

您還需要將行$VIEW_ID = "MY_VIEW_ID";替換爲您的視圖ID。我發現我的地址是https://ga-dev-tools.appspot.com/account-explorer/

這足以讓我最終獲得客戶端庫和HelloAnalytics示例的啓動和運行。我對此並不積極,但如果您正在編寫查詢GA的後端服務,則不需要使用OAuth。