Google:拒绝为不在本地主机上的目标域生成登录提示的权限

Google: Permission denied to generate login hint for target domain NOT on localhost

我正在尝试创建 Google 登录并收到错误:

Permission denied to generate login hint for target domain

在您将此标记为重复之前,这与 Google sign in website Error : Permission denied to generate login hint for target domain 中提出的问题 相同,因为在那种情况下提问者在本地主机上,而我在在服务器上收到此错误。

具体来说,我在Authorized Javascript Origins中包含了服务器的url,如下图:

当我收到错误时,请求显示发送了相同的 url,如下图所示:

我还应该在“限制”页面中添加其他内容吗?有什么办法可以弄清楚这里发生了什么?开发人员控制台上是否有日志可以告诉我发生了什么?

好的,我明白了。我使用 IP 地址(如“http://175.132.64.120") for the redirect uri, as this was a test site on the live server, and Google only accepts actual urls (as in "http://mycompany.com" or "http://localhost”)作为重定向 uris。

你知道的,他们本可以在文档中的某个地方说的,但无论如何。

如果您在您的机器上(本地)进行测试。然后不要在客户端 ID 配置中使用 IP 地址(即 http://127.0.0.1:8888),而是使用本地主机,它应该可以工作

示例:http://localhost:8888

只是 运行 在外部测试服务器上解决了同样的问题,还没有 DNS 条目。如果您在本地计算机上有权限,只需编辑您的 /etc/hosts 文件:

175.132.64.120  www.jimboweb.com

并使用 http://www.jimboweb.com 作为授权域。

我知道这是一个老问题,但这是你通过Google查找问题的第一个结果,所以我会与大家分享我的解决方案。

在私有网络中部署 Google OAuth 服务时,即某些无法通过互联网访问的 IP,您应该使用神奇的 DNS 服务,例如 xip.io,它会给您一个 URL,您的浏览器将解析为您的内部 IP。你看,Google 需要能够通过你的浏览器到达你的授权来源,这就是为什么如果你在你的计算机上提供它,那么设置 localhost 是有效的,但是当你在 Internet 之外部署时它不会工作,如在 VPN、Intranet 或隧道中。

所以,步骤:

  1. 获取您的 IP 地址,即您要部署的 IP 地址,它不是 public 域,假设它是 10.0.0.1 作为示例。
  2. 在 Google 开发者控制台上将 http://10.0.0.1.xip.io 添加到您的授权 Javascript 来源。
  3. 通过访问 http://10.0.0.1.xip.io
  4. 打开您的网站
  5. 如有必要,清除网站的缓存。
  6. 使用 Google 登录,瞧瞧。

我在另一个问题中使用 this answer 找到了这个解决方案。

要允许 ip 地址用作有效的 javascript 来源,请先在您的 /etc/hosts 文件中添加一个条目

10.0.0.1 mydevserver.com

然后在 Authorized Javascript Origins 中添加此域 mydeveserver.com。如果您使用的是一些非标准端口,请在 Authorized Javascript Origins 中用您的域指定它。

注意:删除你的缓存,它就会工作。

如果您使用的是 http://127.0.0.1/projects/testplateform,请将其更改为 http://localhost/projects/testplateform,它会正常工作。

我在私网有一台服务器,ip 172.16.X.X 问题已通过 app port ssh-forwarding 到我的本地主机端口解决。 现在我可以通过 google oauth 浏览到本地主机来使用已部署的应用程序。

ssh -N -L8081:localhost:8080 ${user}@${host}

我还在 "Authorized URI redirect" 中添加 localhost:8081 并在 console.developers.google.com 中添加 "Authorized JavaScript sources":

google developers console

安装 xampp 和 运行 apache 服务器, 将您的文件(index 和 co)放在 xampp 目录 (c:\xampp\htdocs\yourfolder) 的文件夹中。 在浏览器中输入 url - http://localhost/yourfolder/index.html

折腾了几个小时后,发现我在Google云控制台的配置都是正确的,和提供的答案差不多。由于缓存问题或其他原因,我不得不重新创建一个 OAuth 客户端 ID,然后它突然开始工作了。