. Я запрашиваю Analytics API через сервисный аккаунт .
Я написал код на сервере разработки, и он работает без проблем. При запуске того же кода на рабочем сервере выдается это:
Google_AuthException: Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }'
Я попытался создать другую учетную запись службы, и поведение такое же.
Проект oAuth IETF(http://tools.ietf.org/html/draft-ietf-oauth-v2-31)говорит об ошибке:
invalid_grant
The provided authorization grant (e.g. authorization
code, resource owner credentials) or refresh token is
invalid, expired, revoked, does not match the redirection
URI used in the authorization request, or was issued to
another client.
Вот код, который я написал:
$GA_CLIENT_ID = 'XX.apps.googleusercontent.com';
$GA_APP_EMAIL = 'XX@developer.gserviceaccount.com';
$GA_APP_NAME = 'XX';
$GA_KEY_FILE = 'XX';
// create client object and set app name
$client = new Google_Client();
$client->setApplicationName($GA_APP_NAME); // name of your app
// set assertion credentials
$client->setAssertionCredentials(
new Google_AssertionCredentials(
$GA_APP_EMAIL, // email you added to GA
array('https://www.googleapis.com/auth/analytics.readonly'),
file_get_contents($GA_KEY_FILE) // keyfile you downloaded
));
// other settings
$client->setClientId($GA_CLIENT_ID); // from API console
$client->setAccessType('offline_access'); // this may be unnecessary?
// create service and get data
$service = new Google_AnalyticsService($client);
$result = $service->data_ga->get($ids, $startDate, $endDate, $metrics, $optParams);
return $result;
Я также пробовал решение, предложенное здесь(https://groups.google.com/forum/?fromgroups#!topic/gs -обсуждение/3г _2XVE2q7U%5B1 -25%5D)используя аутентифицированный запрос ()вместо Google _AnalyticsService:
$req = new Google_HttpRequest($apiUrl);
$resp = $client::getIo()->authenticatedRequest($req);
$result = json_decode($resp->getResponseBody(), true);
Эта альтернатива также работает на сервере разработки, но не на рабочем.
Я совершенно не разбираюсь в этом. Кто-нибудь это видел/исправил?
Спасибо!