Impossible d'actualiser jeton d'accès : la réponse est “unauthorized_client”
J'obtiens une erreur lorsque j'essaie d'actualiser jeton d'accès:
400 Bad Request
{erreur : "unauthorized_client"}
De Google jeton URI:
{
"error" : "invalid_request"
}
J'ai lu cette réponse ici et l'officiel de Google documents (qui décrit comment un POST
demande devrait chercher) et je ne vois pas la différence.
J'ai capturé mon POST
demande (secrets supprimé):
POST /SHOWMERAWPOST HTTP/1.1
User-Agent: Google-HTTP-Java-Client/1.10.3-beta (gzip)
Pragma: no-cache
Host: requestb.in
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Content-Length: 175
Connection: keep-alive
Cache-Control: no-cache
Accept-Encoding: gzip
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
grant_type=refresh_token&refresh_token=******&client_id=*******.apps.googleusercontent.com&client_secret=******
Code Java qui envoie la requête:
RefreshTokenRequest req = new RefreshTokenRequest(new NetHttpTransport(), new JacksonFactory(), new GenericUrl(
getSecrets().getDetails().getTokenUri()), REFRESH_TOKEN);
req.set("client_id", getSecrets().getDetails().getClientId());
req.set("client_secret", getSecrets().getDetails().getClientSecret());
TokenResponse response = req.execute();
Est-il quelque chose de mal?
u ne à trouver la réponse, obtenir la même erreur (stackoverflow.com/questions/13878605/...)
Je n'ai pas besoin d'emprunter l'identité de l'utilisateur, je suis de l'envoyer au client et d'identification secret avec jeton d'actualisation. C'est une situation différente.
Je n'ai pas besoin d'emprunter l'identité de l'utilisateur, je suis de l'envoyer au client et d'identification secret avec jeton d'actualisation. C'est une situation différente.
OriginalL'auteur Martin V. | 2012-12-14
Vous devez vous connecter pour publier un commentaire.
PROBLÈME EXPLICATION
Avec l'indicateur @MartinV a donné, j'ai enfin pu régler le problème! Parce que sa réponse n'explique pas très bien comment le résoudre, je vais le poster ici.
Le problème, c'est parce que nous avons tous généré le Jeton d'Actualisation à l'aide de Google OAuth aire de Jeux, mais lorsque vous cliquez sur "Autoriser l'Api" dans la première étape, il vous emmène à la concent écran à l'aide de l'aire de Jeux de l'app. Après cela, tous les jetons que vous créez peuvent être utilisés que par l'aire de Jeux de l'app, mais bien sûr vous ne savez pas, soit l'ID de Client ou le Client Secret pour cette application.
SOLUTION
La solution est de faire des Jeux à utiliser votre propre IDENTIFIANT Client et de Secret. Pour ce faire, cliquez sur le bouton Paramètres:
Et entrez votre IDENTIFIANT Client et de Secret. Mais, avant de le faire, comme il est dit là, vous devez aller à la La Console du développeur, trouver votre OAuth 2.0 Id client client, modifier et ajouter https://developers.google.com/oauthplayground sous Autorisé redirect Uri. Après avoir ajouté que et enregistré les modifications, retourner à l'aire de jeux et essayez d'Autoriser Api. Dans mon cas il a fallu environ 15 minutes avant que les changements dans la Autorisé redirect Uri a pris effet.
Une fois que vous avez terminé, n'oubliez pas de retirer de l'aire de Jeux de l'URI de la Console pour Développeur de!
SUPPLÉMENTAIRE
Une fois que je l'ai fait, en Python je l'ai fait et cela a fonctionné:
Pas sûr que je comprends. Dans la cour de jeu, vous devez cliquez sur Change le code d'autorisation pour les jetons pour obtenir le Jeton d'Actualisation.
j'ai essayé de tester sur localhost, et de configurer ma redirect uri aire de jeux, mais j'ai eu: "redirect_uri_mismatch" dans mon serveur localhost
Vous ne savez pas si c'est en utilisant simplement la redirection du paramètre ou de la référent. Je ne me souviens pas. Dans tous les cas, avez-vous quelques minutes après l'ajout de l'aire de jeux de l'URL dans le Dev de la console?
Cette réponse aurait été la bonne approfondie répondez - vous littéralement m'a sauvé! haha
OriginalL'auteur Diego Jancic
J'ai créé d'accès et d'actualisation de jeton dans OAuth2 aire de jeux et puis j'ai copié sur mon application.
Il n'est pas permis d'avoir des clients différents pour l'autorisation et du jeton d'actualisation.
Salut Martin, pouvez-vous s'il vous plaît laissez-moi savoir ce que vous avez fait pour résoudre cette erreur. je suis face à un même problème.
Qu'est-ce que cela signifie?
Pourriez-vous définir ce qu'est un client est... de l'Adresse IP, l'Agent Utilisateur, comment sait-elle?
ce problème se produit lorsque u à l'aide de l'actualisation jeton est généré par [clientid,screretid] qui est différent de [clientid,screredid] est utilisé pour autoriser processus.
OriginalL'auteur Martin V.
Une autre solution à l'aide de l'API REST pour obtenir un
access_token
et ensuite l'utiliser pour interagir avec le RESTE de l'API (par exemple ajouter une vidéo à une playlist) après la création de larefresh_token
comme décrit ci-dessus.OriginalL'auteur Livioso
J'ai eu le même problème. La solution a été d'utiliser le même client au moment de l'autorisation de l'application et lors de la mise à jour du jeton sur le serveur.
Pouvez pas actualiser jeton d'accès pour Google Calendar API côté serveur
OriginalL'auteur Artemius Pompilius