L'API Google Analytics exclut l'exception "invalid_grant" avec le compte de service. Même code sur deux serveurs. Une seule œuvre

Je suis d'interrogation de l'Analytics API via un Compte de Service.

J'ai écrit le code sur le serveur de dev et ça fonctionne sans problèmes.
Lorsqu'il exécute le même code sur le serveur de production, il jette ce:

Google_AuthException: Erreur lors de l'actualisation de la OAuth2 jeton, message:" {
"erreur" : "invalid_grant" }'

J'ai essayé de créer un autre compte de Service, et le comportement est le même.

Le protocole de l'IETF projet (http://tools.ietf.org/html/draft-ietf-oauth-v2-31) dit ceci à propos de l'erreur:

     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.

Voici le code que j'ai écrit:

$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;

J'ai aussi essayé la solution proposée ici (https://groups.google.com/forum/?fromgroups#!topic/gs-discussion/3y_2XVE2q7U%5B1-25%5D) à l'aide de authenticatedRequest() au lieu de Google_AnalyticsService:

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

Cette solution fonctionne également sur le serveur de dev, mais pas sur la production.

Je suis totalement ignorant sur ce point. Quelqu'un a vu ce/fixe?

Merci!

source d'informationauteur Valer | 2012-08-15