2016-08-04 59 views
0

Ich versuche, einen Code in PHP schreiben, die Verbindung zu meinem Google Analytics-Konto, ziehen Sie die Daten von dort, und dann muss ich auf den Code - in SQL-Tabellen einfügen Dieser usw.Verbinden mit Google Analytics API mit PHP

ist der Ordner, die ich heruntergeladen hat: https://github.com/google/google-api-php-client/releases (google-api-php-client-2.0.2.zip)

ich diese google-Anleitung: https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/web-php
, die eigentlich für den Zugriff auf die API durch ist eine URL, also habe ich ein paar Anpassungen vorgenommen, damit ich die Daten lokal behandeln werde (z. B. Refresh-Token usw.).

dies ist mein Code:

<?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"); 
       } 
      } 
     } 
    } 
} 

Aber ich teste das Skript, das der Fehler erhalte ich: enter image description here

Hat hat jemand eine Idee, warum kann ich nicht auf die API Connext?

Was mache ich falsch in meiner Verbindung? Sind meine Referenzen nicht richtig? Fehle ich einen Schlüssel irgendeiner Art? Ich würde wirklich jede Hilfe zu schätzen wissen.

Vielen Dank!

Antwort

2

Ich habe selbst daran gearbeitet. Ich musste in den API-Manager (https://console.developers.google.com/apis) gehen, ein Projekt erstellen, ein Dienstkonto erstellen (das ist das Konto zum Erstellen eines Back-End-Analysedienstes wie diesem) und Anmeldeinformationen generieren. Das gibt Ihnen eine .json-Datei, die Sie in Ihrem Code verknüpfen müssen: $client->setAuthConfigFile(dirname(__FILE__) . '/{you-credential-file}.json');

In dieser Anmeldeinformationsdatei finden Sie die E-Mail-Adresse des Dienstkontos im JSON-Feld "client_email". Sie müssen zu analytics.google.com gehen und zu "Admin" gehen, um diese Adresse mit den Auswertungsberechtigungen & hinzuzufügen.

Sie müssen auch die Zeile $VIEW_ID = "MY_VIEW_ID"; mit Ihrer Ansicht ID ersetzen. Ich fand meine bei https://ga-dev-tools.appspot.com/account-explorer/

Das war genug für mich, um endlich die Client-Bibliothek und das HelloAnalytics-Beispiel zum Laufen zu bringen. Ich bin nicht davon überzeugt, aber wenn Sie einen Back-End-Dienst schreiben, der GA abfragt, sollten Sie OAuth nicht verwenden müssen.