Auth Google Analytics PHP API

问题描述:

I have tried the official HelloAnalytics tutorial however it doesn't work.

I am recieveing this error:

"PHP Fatal error: Class 'Google_Auth_AssertionCredentials' not found"

My Code:

  // Creates and returns the Analytics service object.

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

  // Use the developers console and replace the values with your
  // service account email, and relative location of your key file.
  $service_account_email = 'xxxxxxxxxxx@gmail.com';
   $key_file_location = 'key_anyl.p12';

 // Create and configure a new client object.
  $client = new Google_Client();
  $client->setApplicationName("HelloAnalytics");
   $analytics = new Google_Service_Analytics($client);

 // Read the generated client_secrets.p12 key.
  $key = file_get_contents($key_file_location);
  $cred = new Google_Auth_AssertionCredentials(
  $service_account_email,
  array(Google_Service_Analytics::ANALYTICS_READONLY),
  $key
   );
 $client->setAssertionCredentials($cred);
   if($client->getAuth()->isAccessTokenExpired()) {
   $client->getAuth()->refreshTokenWithAssertion($cred);
  }

Update:

after adding the suggested V1-master branch I am now getting the following error

Uncaught exception 'Google_Service_Exception' with message 'Error calling GET googleapis.com/analytics/v3/management/accounts: (403) User does not have any Google Analytics account.'

Problem nr 1:

if your not using composer make sure you downloaded the v1-master branch – Link

Problem nr 2:

(403) User does not have any Google Analytics account.

You are using a service account by default a service account does not have access to any google analytics accounts. You need to take the service account email address from Google Developers console and add it as a user at the ACCOUNT level it must be the ACCOUNT level in the Google Analytics website under the admin section.

For your problem you need to add the base directory of the library in the php 'include_path'.

Try putting this line of code before the require_once

set_include_path( get_include_path() . PATH_SEPARATOR . 'vendor/google/src' );