8

I want to access our Google Analytics account reporting using the newer v3.0, but it seems from everything that I read that in order to get a valid access token the user must log in.

We want direct access to our own account reporting, and not access a client's depending on their account. How do we accomplish this in PHP without having to send the browser to a Google login page? Is there no straight API authentication for v3.0?

EDIT

This seems to be the only method of accessing the API without end-user interaction, which they call "Server to Server":

https://developers.google.com/accounts/docs/OAuth2ServiceAccount

EDIT 2

Looks like it can't be done? ;(

Warning: Very few Google APIs currently support Service Accounts. Service accounts are currently supported by the following Google developer services:

  • Google Cloud Storage
  • Google Prediction API
  • Google URL Shortener
  • Google OAuth 2.0 Authorization Server

EDIT 3

There seems to be a solution after all, as I log in once and then use "Refresh Tokens" to keep gaining access without an additional user login.

Sarke
  • 2,805
  • 2
  • 18
  • 28
  • Hi @Sarke, This is a real life question that most GA-API programmers run into, I'm running into it now, I want to ask you if you figure out any solution for it, I read somewhere that you should save the access token and the refresh token as a variable and feed it to SetAcess() function, but I didn't get it to work. please let me know if you figure out anything, and post a code snippet, that will be highly appreciated! Thanks – mongotop Nov 19 '12 at 04:25

1 Answers1

1

I did end up using the refresh tokens, they work fine. I got a oauth token by using the google api console, and then saved it.

Then I just do this before each request:

require_once 'google-api-php-client/src/apiClient.php';
require_once 'google-api-php-client/src/contrib/apiAnalyticsService.php';;

$client = new apiClient();
$client->setApplicationName('My Analytics');
$client->setClientId($this->client_id);
$client->setClientSecret($this->client_secret);
$client->setDeveloperKey($this->api_key);

$client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));

$client->refreshToken($this->refresh_token);

$this->service = new apiAnalyticsService($client);
Sarke
  • 2,805
  • 2
  • 18
  • 28