为什么Google Oauth会在我的Rails应用中返回`invalid redirect_urI`?

And*_*vey 44 ruby-on-rails oauth

我正在将Google Oauth2添加到Rails应用程序中,但无法超越早期阶段.

我已经设置了一个应用程序,并定义了客户端ID和秘密.但我得到了 Invalid parameter value for redirect_uri: Non-public domains not allowed: http://localhost/path/to/callback

这是什么意思?这是因为我正在测试本地开发环境吗?

谢谢你的任何想法.

编辑

这可能是因为应用程序的URI与发送URI不同.但是,当我去谷歌并尝试授权我的开发应用程序的路径时,我得到了OAuth2 redirect is invalid.这是使用本地托管应用程序的限制吗?

编辑2

我生成的请求看起来像这样:

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
Run Code Online (Sandbox Code Playgroud)

它是否正确.我用client_id尝试了这个,包括并排除了.apps.googleusercontent.com部分.似乎都没有用.

Ois*_*sin 67

我收到了在ubuntu上运行的python/tornado应用程序的重定向错误.使用localhost不起作用,突出显示已接受的答案.谷歌想要一个公共领域.

我的解决方案是搭载"example.com",这是公共的,并在我的/ etc/hosts文件中创建一个子域.子域可以在我的本地开发框中工作,谷歌会对example.com域感到满意.我通过谷歌控制台注册重定向,重定向成功地为我工作.

我在/ etc/hosts中添加了以下内容:

192.168.33.100   devbox  devbox.example.com
Run Code Online (Sandbox Code Playgroud)

就我而言,IP是我机器的IP.我也可以使用127.0.0.1代替.

我的Google API控制台(https://code.google.com/apis/console)设置了新的客户端ID:

  • 使用不同于localhost(local.mydomain.com)的域并使用hosts文件将假域映射到127.0.0.1就像魅力一样.谢了哥们. (8认同)
  • 这个解决方案+ xip.io适用于模拟器和真实手机.example.com不起作用,因为模拟器或手机无法访问由主机/ etc/hosts伪造的example.com.xip.io提供全局伪造域.它有效吗? (3认同)

Hap*_*off 18

使用xip.io,您可以提供一个公共网址,以重定向到http://your_pow_app.192.168.0.1.xip.io/user/auth/google_oauth2/callback

经过测试和工作.


小智 5

我使用了我的公共主机名.如果您有静态IP地址,它会有所帮助.我用http://www.displaymyhostname.com/来获取我的主机名.我在创建新的Web应用程序客户端ID时将其直接插入Authorized JavaScript originins字段.

PS我的主机名看起来像这样:111.111.111.111.static.exetel.com.au

这是我对相关问题/sf/answers/1646200251/的回答


And*_*vey 2

对于发现这一点的其他人来说,我的问题是几件事的结合。

  1. 我无法获得在本地计算机上工作的回调。控制台 API 控制台表明这是可能的,但我无法让它工作。不确定这是由于服务,还是由于我的网络/连接/防火墙/等。

  2. 在 API 控制台中,您必须指定完整的重定向 URI,而不仅仅是返回应用程序的根 url。

  3. Google 在此处列出了范围参数https://developers.google.com/gdata/faq#AuthScopes。看来这些信息已经过时了,这些信息的正确格式现在是https://www.googleapis.com/auth/plus.mehttps://www.googleapis.com/auth/youtube等。也许是其他人可以证实这一点吗?

我还发生了一些其他事情。我已经在这里对我的另一个问题写了完整的解释。不幸的是,我的评论被删除而不是被版主移动,因为我发布在错误的位置。我现在记不起我写的所有内容了。对于其他面临类似问题的人,请随时发表评论,这可能会唤起我的记忆,以便我可以提供一些想法。