Google Analytics API - исключение «invalid_grant» с учетной записью службы. Один и тот же код на двух серверах. Только одна работает

Я запрашиваю Google Analytics API черезService Account.

Я написал код на сервере Dev, и он работает без проблем. При запуске того же кода на рабочем сервере он выдает следующее:

Google_AuthException: Error refreshing the OAuth2 token, message: '{ "error" : "invalid_grant" }'

Я пытался создать другую учетную запись службы, и поведение не изменилось.

Черновик документа 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 = '[email protected]';
$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-discussion/3y_2XVE2q7U%5B1-25%5D) с использованием authenticatedRequest () вместо Google_AnalyticsService:

$req = new Google_HttpRequest($apiUrl);
$resp = $client::getIo()->authenticatedRequest($req);
$result = json_decode($resp->getResponseBody(), true);

Эта альтернатива также работает на сервере dev, но не на рабочем.

Я абсолютно невежественен в этом. Кто-нибудь видел это / исправил?

Спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос