Pourquoi Google outh retourne ' invalides redirect urI` dans mon application Rails?

J'ajoute Google Oauth2 à une application Rails, mais j'ai été incapable de passer les premières étapes.

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

Qu'est-ce que cela signifie? Est-ce que c'est parce que je teste un environnement dev local?

Merci pour toutes les idées.

EDIT

ceci pourrait être dû au fait que L'URI de l'application diffère de l'URI d'envoi. Mais quand je vais sur Google et que j'essaie d'autoriser le chemin d'accès à mon dev application, j'obtiens 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 correct. J'ai essayé avec client_id en incluant et en excluant le .apps.googleusercontent.com section. Ni semble fonctionner.

42
demandé sur Andy Harvey 2012-04-18 22:43:23

7 réponses

j'ai eu l'erreur de redirection pour mon application Python / tornado fonctionnant sur ubuntu. L'utilisation de localhost n'a pas fonctionné comme la réponse acceptée l'a souligné. Google veut un domaine public.

ma solution était de piggyback "example.com" qui est public et crée un sous-domaine dans mon fichier /etc/hosts. Le sous-domaine fonctionnerait sur ma dev box locale et google serait heureux avec le example.com domaine. J'enregistre les redirections via la console google et la redirection a fonctionné avec succès m'.

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

192.168.33.100   devbox  devbox.example.com

dans mon cas, L'IP était celle de ma machine. J'aurais aussi pu utiliser 127.0.0.1 à la place.

ma console API Google (https://code.google.com/apis/console) mis en place pour un nouveau code d'identification de client était:

67
répondu Oisin 2012-08-17 10:58:03

en utilisant xip.io vous pouvez fournir une url publique pour rediriger vers like http://your_pow_app.192.168.0.1.xip.io/user/auth/google_oauth2/callback

testé et opérationnel.

16
répondu Happynoff 2013-11-05 15:17:09

j'ai utilisé mon nom d'hôte public. Cela 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 le Autorisé JavaScript origines champ quand j'ai créé un nouveau identification du Client de L'Application Web.

voici ma réponse à une question connexe https://stackoverflow.com/a/23517146/1320083

5
répondu Tyson 2017-05-23 12:02:32

pour quelqu'un d'autre qui a trouvé ça, mon problème était la combinaison de plusieurs choses.

  1. je ne pouvais pas obtenir les rappels de travailler sur une machine locale. La console de l'API de console suggère que c'est possible, mais je n'ai pas pu le faire fonctionner. Pas sûr que ce soit le service, ou mon réseau/ connexion/ pare-feu/ etc.

  2. dans la console API, vous devez spécifier la totalité de L'URI de redirection, et pas seulement l'url racine de votre application.

  3. Google liste les paramètres de portée ici https://developers.google.com/gdata/faq#AuthScopes. Il semble que cette information soit périmée, et le format correct pour ceux-ci 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'avais aussi d'autres choses à faire. J'avais écrit une explication complète sur un autre mes questions ici. 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 d'autres qui font face à la même question, n'hésitez pas à commenter, il peut Jogg ma mémoire afin que je puisse offrir quelques idées.

2
répondu Andy Harvey 2012-05-18 07:37:08

erreur redirect_uri_mismatch - cette erreur peut se produire lorsque vous avez entré un identifiant de paquet incorrect dans votre projet de Console de développeurs Google qui ne correspond pas à l'identifiant de paquet de votre application. Vérifiez que votre ID client et votre ID bundle correspondent aux valeurs affichées dans la Console des développeurs.

0
répondu Venu Gopal Tewari 2015-06-12 12:11:21

Pour moi, c'était la fonction qui construit l'url de google. J'ai mis des sauts de ligne dans la chaîne, une fois que j'ai enlevé la ligne sauts l'url a fonctionné à nouveau.

0
répondu Lanklaas 2017-06-18 06:41:35

j'ai fait face à ce problème mais j'ai trouvé que ce n'était vraiment pas un problème. Comme expliqué mon blog vous pouvez utiliser L'URI de redirection publique même si vous travaillez sur votre machine de développement localhost. Google va simplement retourner le code d'autorisation à L'URI public où vous pouvez le couper et le coller sur votre machine locale.

-2
répondu cdavidyoung 2013-11-18 23:51:03