google compte de service exemple renvoie “Erreur lors de l'actualisation de la OAuth2 jeton { “error” : “invalid_grant” }”
Mon but est de faire le plus simple requête sur Google Fusion Tables
au nom de mon web, les utilisateurs de l'application. Pour cela, j'ai créé un compte de service sur google console. Voici le code:
//Creating a google client
$client = new \Google_Client();
//setting the service acount credentials
$serviceAccountName = 'XXXXX.apps.googleusercontent.com';
$scopes= array(
'https://www.googleapis.com/auth/fusiontables',
'https://www.googleapis.com/auth/fusiontables.readonly',
);
$privateKey=file_get_contents('/path/to/privatekey.p12');
$privateKeyPassword='notasecret'; //the default one when generated in the console
$credential = new \Google_Auth_AssertionCredentials($serviceAccountName,
$scopes, $privateKey, $privateKeyPassword);
//setting assertion credentials
$client->setAssertionCredentials($credential);
$service = new \Google_Service_Fusiontables($client);
$sql = 'select name from XXXXXXXX';
$result = $service->query->sql($sql);
Après l'exécution de ce code, j'ai eu cette erreur:
Error refreshing the OAuth2 token, message: '{
"error" : "invalid_grant"
}'
J'ai googlé que pour les jours et la plupart des réponses sont en train de parler à propos de l'actualisation de l'jeton. J'ai fait cette mise à jour, mais toujours les mêmes erreurs!
Une idée pour résoudre ce problème?
Grâce
OriginalL'auteur Amine Jallouli | 2014-07-04
Vous devez vous connecter pour publier un commentaire.
Dans mon cas, il a été provoqué par le serveur de temps étant trop loin (environ 5 minutes).
Bien que votre problème est déjà résolu, c'est peut-être d'une aide quelconque pour quelqu'un qui arrive ici dans l'avenir comme le message d'erreur renvoyé par Google est le même.
la meilleure façon de garder votre serveur de synchronisation est d'utiliser NTP. Pour vérifier l'heure actuelle sur le serveur, utilisez la
date
de commande.Wow, merci pour l'astuce Bjorn. J'avais essayé beaucoup d'autres possibilités. 🙂
OriginalL'auteur Bjorn
Je sais que beaucoup de gens sont confrontés au même problème comme le mien. Donc, c'est la solution après des jours de recherche sur google.
Le code que j'ai proposé a une seule erreur: le code client est comme un e-mail similaire à
[email protected]
La deuxième chose que vous avez à faire est de partager la table vous sont quering dans google fusion tables avec le client id du compte de service.
Après cela, rien ne fonctionne parfaitement.
J'espère que cela aidera d'autres.
Vous devez créer le
$client
et l'ensemble de ses informations d'identification, utilisezSpreadsheetService
amine jallouli pourriez-vous élaborer sur ce, comme une réponse à cette question, j'ai juste posé: stackoverflow.com/questions/26965299/... ?
Qu'entendez-vous par la création de la
$client
? Quels moyens dois-je invoquer, et quels sont les paramètres?Dans ma question, j'ai donné la façon de créer de
\Google_Client()
, puis\Google_Auth_AssertionCredentials
et enfin la\Google_Service_Fusiontables
. Vous devez suivre ces étapes. Pour votre cas, vous allez utiliser " Google\Tableur\SpreadsheetService`.OriginalL'auteur Amine Jallouli
J'ai eu la même erreur dans google analytique de l'API, j'ai résolu en ajoutant mon
Service accounts Email address
avec google analytic compte.OriginalL'auteur Nishad Up