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),而是使用本地主机,它应该可以工作
只是 运行 在外部测试服务器上解决了同样的问题,还没有 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 或隧道中。
所以,步骤:
- 获取您的 IP 地址,即您要部署的 IP 地址,它不是 public 域,假设它是
10.0.0.1
作为示例。
- 在 Google 开发者控制台上将
http://10.0.0.1.xip.io
添加到您的授权 Javascript 来源。
- 通过访问
http://10.0.0.1.xip.io
打开您的网站
- 如有必要,清除网站的缓存。
- 使用 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,然后它突然开始工作了。
我正在尝试创建 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),而是使用本地主机,它应该可以工作
只是 运行 在外部测试服务器上解决了同样的问题,还没有 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 或隧道中。
所以,步骤:
- 获取您的 IP 地址,即您要部署的 IP 地址,它不是 public 域,假设它是
10.0.0.1
作为示例。 - 在 Google 开发者控制台上将
http://10.0.0.1.xip.io
添加到您的授权 Javascript 来源。 - 通过访问
http://10.0.0.1.xip.io
打开您的网站
- 如有必要,清除网站的缓存。
- 使用 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,然后它突然开始工作了。