46

我正在将 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

这个对吗。我已经尝试使用 client_id 包括和不包括该.apps.googleusercontent.com部分。两者似乎都不起作用。

4

7 回答 7

69

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

我的解决方案是搭载公共的“example.com”,并在我的 /etc/hosts 文件中创建一个子域。子域可以在我的本地开发盒上运行,谷歌会对 example.com 域感到满意。我通过谷歌控制台注册了重定向,并且重定向对我来说成功。

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

192.168.33.100   devbox  devbox.example.com

在我的情况下,IP 是我机器的 IP。我也可以使用 127.0.0.1 代替。

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

  • “应用程序类型:Web 应用程序”。
  • 通过“您的站点或主机名(更多选项)”:
于 2012-08-17T10:58:03.937 回答
18

使用 xip.io 你可以提供一个公共 url 来重定向到http://your_pow_app.192.168.0.1.xip.io/user/auth/google_oauth2/callback

测试和工作。

于 2013-11-05T15:17:09.473 回答
5

我使用了我的公共主机名。如果您有一个静态 IP 地址,它会有所帮助。我使用http://www.displaymyhostname.com/来获取我的主机名。当我创建一个新的Web Application Client ID时,我将它直接插入Authorized JavaScript origins字段。

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

这是我对相关问题的回答https://stackoverflow.com/a/23517146/1320083

于 2014-05-07T12:00:22.063 回答
2

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

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

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

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

我还有其他一些事情要做。我已经在 SO 上写了我的另一个问题的完整解释。不幸的是,我的评论被删除而不是被版主移动,因为我发错了地方。我现在不记得我写的所有东西了。对于其他面临类似问题的人,请随时发表评论,它可能会唤起我的记忆,因此我可以提供一些想法。

于 2012-05-18T07:37:08.793 回答
0

错误 redirect_uri_mismatch - 当您在 Google Developers Console 项目中输入的捆绑 ID 与您的应用的捆绑 ID 不匹配时,可能会发生此错误。检查您的客户端 ID 和捆绑包 ID 是否与 Developers Console 中显示的值匹配。

于 2015-06-12T12:11:21.703 回答
0

对我来说,它是建立 google url 的函数。我在字符串中放置了换行符,一旦我删除了换行符,url 就会再次起作用。

于 2017-06-18T06:41:35.340 回答
-2

我遇到了这个问题,但发现这真的不是问题。正如我的博客中所解释的,即使您在 localhost 开发机器上工作,您也可以使用公共重定向 URI。Google 只会将授权代码返回到公共 URI,您可以在其中将其剪切并粘贴到本地计算机。

于 2013-11-18T23:51:03.083 回答