2014-06-27 1 views
8

J'ai essayé d'implémenter une application qui nécessiterait que l'utilisateur accorde l'accès à Google Analytics. J'ai suivi ce tutoriel:Comment obtenir un jeton d'actualisation lors de l'utilisation de l'API Google JS Client

https://developers.google.com/analytics/solutions/articles/hello-analytics-api

Et à d'autres endroits, il y a un code pour AngularJS qui utilise le même functionL

https://gist.github.com/jakemmarsh/5809963

Mon problème est que le auth fonctionne assez bien , mais cela ne renvoie pas refresh_token. Il ne renvoie jamais de refresh_token. J'ai essayé tous les possibles disponibles sur le web. 1. La première fois, 2. En utilisant prompt = force etc etc .. Mais rien ne semble retourner le refresh_token. Je suppose que cette partie est ignorée par le client ou quelque chose.

J'ai besoin de savoir comment puis-je obtenir le refresh_token lorsque l'utilisateur accorde un accès pour la première fois afin que je puisse l'enregistrer.

+3

Bonjour, J'ai actuellement le même problème pour utiliser l'API Google Calendar. Pourriez-vous résoudre ce problème? –

Répondre

18

Il ne renvoie pas un jeton d'actualisation comme prévu. Le didacticiel et le code que vous avez mentionnés utilisent Google APIs Client Library for JavaScript. Cette bibliothèque utilise le OAuth 2.0 client-side flow pour effectuer des demandes nécessitant une autorisation.

Comme The OAuth 2.0 Authorization Framework says:

OAuth 2.0 écoulement côté client (AKA flux implicite) est utilisé pour obtenir des jetons d'accès (il ne prend pas en charge l'émission de jetons de rafraîchissement) et est optimisé pour des clients publics connus pour fonctionner une URI de redirection particulière. Ces clients sont généralement implémentés dans un navigateur utilisant un langage de script tel que JavaScript.

Le serveur d'autorisation NE DOIT PAS émettre un jeton d'actualisation.

En fait, le flux de code d'autorisation est le seul qui délivre jeton rafraîchissement et Google prend en charge ce flux dans ces scénarios: applications serveur Web, les applications installées, et des applications sur des dispositifs d'entrée limitée, mais pas client- côté (JavaScript) des applications ou des comptes de service. Get more details from here.

Vous ne recevrez donc pas de jeton d'actualisation de cette manière.

+0

qu'en est-il si nous voulons utiliser rafraîchir le jeton d'accès qui est généré par le côté serveur (PHP) de connexion dans le client JavaScript côté api pour le téléchargement de vidéo sur youtube cela fonctionnera-t-il ...? – usama

+0

@usama vous devez utiliser le jeton d'accès retourné (généré par le jeton d'actualisation) depuis youtube. –

Questions connexes