44 votes

Pourquoi Google Oauth renvoie-t-il `invalid redirect_urI` dans mon application Rails?

Je suis en ajoutant Google Oauth2 pour une application Rails, mais ont été incapables de franchir les premières étapes.

J'ai mis en place une application, et défini d'identification du client et secret.Mais je reçois Invalid parameter value for redirect_uri: Non-public domains not allowed: http://localhost/path/to/callback

Qu'est-ce que cela signifie? Est-ce parce que je suis en essais sur un local environnement de dev?

Merci pour toutes les idées.

MODIFIER

Cela peut être parce que l'URI de l'application diffère de l'envoi d'URI. Mais quand je vais sur Google et que vous essayez d'autoriser le chemin d'accès à mon dev d'appli, je reçois OAuth2 redirect is invalid. Est-ce une limitation de l'utilisation d'un hébergés localement application?

EDIT 2

La demande, je suis de la génération ressemble à ceci:

https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=###########&redirect_uri=http%3A%2F%2Fmyapp.dev%2Fusers%2Fauth%2Fgoogle_oauth2%2Fcallback&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&approval_prompt=&access_type=offline

Est-ce correcte. J'ai essayé cela avec client_id en incluant et en excluant l' .apps.googleusercontent.com section. Ni semble fonctionner.

67voto

Oisin Points 436

J'ai été faire la redirection de l'erreur pour mon python / tornade application qui s'exécute sur ubuntu. À l'aide de localhost ne fonctionne pas comme la accepté de répondre en surbrillance. Google veut du domaine public.

Ma solution a été de piggyback "example.com" ce qui est public et de créer un sous-domaine dans mon fichier /etc/hosts. Le sous-domaine serait de travailler sur mon local de la boîte de dev et google serait heureux avec le example.com domaine. I enregistrement de la redirige via le google de la console et de le rediriger travaillé avec succès pour moi.

J'ai ajouté ce qui suit à mon /etc/hosts:

192.168.33.100   devbox  devbox.example.com

Dans mon cas, l'IP a été que de ma machine. J'ai pu également utiliser 127.0.0.1 à la place.

Mon API Google console (https://code.google.com/apis/console) mis en place pour un nouveau client ID:

18voto

Happynoff Points 498

En utilisant xip.io, vous pouvez fournir une URL publique vers laquelle vous rediriger, comme http://votre_pow_app.192.168.0.1.xip.io/user/auth/google_oauth2/callback.

Testé et fonctionnel.

5voto

Tyson Points 173

J'ai utilisé mon nom d'hôte public. Il aide si vous avez une adresse IP statique. J'ai utilisé http://www.displaymyhostname.com/ pour obtenir mon nom de domaine. Je l'ai branché directement dans l' Autorisés JavaScript origines champ lorsque j'ai créé une nouvelle Application Web de l'IDENTIFIANT Client.

P. S. Mon nom d'hôte cherché quelque chose comme ceci: 111.111.111.111.statique.exetel.com.au

C'est ma réponse à une question connexe http://stackoverflow.com/a/23517146/1320083

2voto

Andy Harvey Points 2759

Pour quelqu'un d'autre trouver cet, mon problème était une combinaison de plusieurs choses.

  1. Je ne pouvais pas obtenir les rappels de travailler sur une machine locale. La console API console suggère qu'il est possible, mais je ne pouvais pas le faire fonctionner. Pas sûr de ce qui est en bas pour le service, ou de mon réseau/ connexion/ pare-feu/ etc.

  2. Dans l'API console, vous devez spécifier le redirect URI, pas juste l'url de la racine du retour à votre application.

  3. Google répertorie les paramètres de portée ici https://developers.google.com/gdata/faq#AuthScopes. Il semble que cette information est obsolète, et le format correct pour ces est maintenant https://www.googleapis.com/auth/plus.me, https://www.googleapis.com/auth/youtube, etc. Peut-être que quelqu'un d'autre peut confirmer?

J'ai eu un peu d'autres choses qui se passent ainsi. J'avais écrit une explication complète sur un autre de mes questions ici sur DONC. Malheureusement, mes commentaires ont été supprimés au lieu de déplacé par un modérateur parce que j'ai posté au mauvais endroit. Je ne peux pas maintenant, rappelez-vous tout ce que j'ai écrit. Pour ceux qui sont confrontés à problème similaire, n'hésitez pas à commenter, il peut jogging ma mémoire afin que je puisse vous proposons quelques idées.

-2voto

cdavidyoung Points 1241

J'ai fait face à ce problème mais j'ai trouvé que ce n'était vraiment pas un problème. Comme expliqué dans mon blog, vous pouvez utiliser l'URI de redirection publique même lorsque vous travaillez sur votre machine de développement localhost. Google renverra simplement le code d'autorisation à l'URI publique, où vous pourrez le copier-coller sur votre ordinateur local.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X