问题
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.
回答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);
来源:https://stackoverflow.com/questions/11966554/google-analytics-core-reporting-api-version-3-0-without-client-login