2016-08-03 1 views
4

EDIT - dieses Tutorial (obwohl fast wie das Tutorial von Google) war, was schließlich die Dinge funktionieren: http://teev.io/blog/google-analytics-api-phpGoogle Analytics API: Wie Konten ziehen, immer listManagementAccounts() auf nicht-Objektfehler

I‘ m versuchen, das Tutorial zu folgen, die hier erwähnt wird: https://developers.google.com/analytics/devguides/reporting/core/v3/quickstart/service-php

ich habe alle Schritte folgen:

  1. ein Projekt angelegt.
  2. Erstellt ein Dienstkonto. (Wenn ich nach JSON oder P12 gefragt, wählte ich JSON)
  3. Ich lief composer require google/apiclient:^2.0 in Putty und aktualisierte meine composer.json Datei.
  4. legte meine service-account-credentials.json Datei, die ich gerade in /public_html Ordner heruntergeladen
  5. Erzeugte Datei HelloAnalytics.php und legte sie in /public_html Ordner.

HelloAnalytics.php:

<?php 

// Load the Google API PHP Client Library. 
require_once '/home/user/vendor/autoload.php'; 

$analytics = initializeAnalytics(); 
$profile = getFirstProfileId($analytics); 
$results = getResults($analytics, $profile); 
printResults($results); 

function initializeAnalytics() 
{ 
    // Creates and returns the Analytics Reporting service object. 

    // Use the developers console and download your service account 
    // credentials in JSON format. Place them in this directory or 
    // change the key file location if necessary. 
    $KEY_FILE_LOCATION = __DIR__ . '/service-account-credentials.json'; 

    // Create and configure a new client object. 
    $client = new Google_Client(); 
    $client->setApplicationName("Hello Analytics Reporting"); 
    $client->setAuthConfig($KEY_FILE_LOCATION); 
    $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); 
    $analytics = new Google_Service_AnalyticsReporting($client); 

    return $analytics; 
} 

function getFirstProfileId($analytics) { 
    // Get the user's first view (profile) ID. 

    // Get the list of accounts for the authorized user. 
    $accounts = $analytics->management_accounts->listManagementAccounts(); 

    if (count($accounts->getItems()) > 0) { 
     $items = $accounts->getItems(); 
     $firstAccountId = $items[0]->getId(); 

     // Get the list of properties for the authorized user. 
     $properties = $analytics->management_webproperties 
      ->listManagementWebproperties($firstAccountId); 

     if (count($properties->getItems()) > 0) { 
      $items = $properties->getItems(); 
      $firstPropertyId = $items[0]->getId(); 

      // Get the list of views (profiles) for the authorized user. 
      $profiles = $analytics->management_profiles 
       ->listManagementProfiles($firstAccountId, $firstPropertyId); 

      if (count($profiles->getItems()) > 0) { 
       $items = $profiles->getItems(); 

       // Return the first view (profile) ID. 
       return $items[0]->getId(); 

      } else { 
       throw new Exception('No views (profiles) found for this user.'); 
      } 
     } else { 
      throw new Exception('No properties found for this user.'); 
     } 
    } else { 
     throw new Exception('No accounts found for this user.'); 
    } 
} 

function getResults($analytics, $profileId) { 
    // Calls the Core Reporting API and queries for the number of sessions 
    // for the last seven days. 
    return $analytics->data_ga->get(
     'ga:' . $profileId, 
     '7daysAgo', 
     'today', 
     'ga:sessions'); 
} 

function printResults($results) { 
    // Parses the response from the Core Reporting API and prints 
    // the profile name and total sessions. 
    if (count($results->getRows()) > 0) { 

     // Get the profile name. 
     $profileName = $results->getProfileInfo()->getProfileName(); 

     // Get the entry for the first entry in the first row. 
     $rows = $results->getRows(); 
     $sessions = $rows[0][0]; 

     // Print the results. 
     print "First view (profile) found: $profileName\n"; 
     print "Total sessions: $sessions\n"; 
    } else { 
     print "No results found.\n"; 
    } 
} 

die leider diesen Fehler erzeugt:

Fatal error: Call to a member function listManagementAccounts() on a non-object in....

Gibt es Tipps, wie eigentlich bekommen dies funktioniert?

Antwort

1

Ihr Code verwendet den alten v1-master-Zweigcode, aber Sie versuchen, composer require google/apiclient:^2.0 zu verwenden.

<?php 

// Load the Google API PHP Client Library. 
require_once __DIR__ . '/vendor/autoload.php'; 

$analytics = initializeAnalytics(); 
$profile = getFirstProfileId($analytics); 
$results = getResults($analytics, $profile); 
printResults($results); 
... 
+0

Ich habe genau dieses

Aktualisieren Sie Ihren Code im link you provided gegeben übereinstimmen. Aber jetzt bekomme ich einen Fehler ** Rufen Sie eine Member-Funktion listManagementAccounts() auf einem Nicht-Objekt in ** auf, ich werde meine Frage überarbeiten. – NoReceipt4Panda

+0

Boom - das hat es geschafft: http://teev.io/blog/google-analytics-api-php – NoReceipt4Panda

2

statt:

$analytics = new Google_Service_AnalyticsReporting($client); 

Tun Sie dies:

$analytics = new Google_Service_Analytics($client); 
Verwandte Themen