【问题标题】:Can a public IP address be used as Google OAuth redirect URI?可以将公共 IP 地址用作 Google OAuth 重定向 URI 吗?
【发布时间】:2012-12-23 16:53:19
【问题描述】:

我正在尝试设置一个需要用户谷歌纵横信息的网络服务,所以我正在使用谷歌 OAuth 来获取用户授权信息。

但是,当尝试在 Google API 控制台中为 Web 应用程序客户端 ID 设置重定向 URI 时,如果尝试将其设置为“http://PUBLIC_IP/”,则会收到消息错误。

我需要用非本地用户测试它(因此不能使用 localhost),所以我想知道是否必须拥有一个网络域才能使用 Google 的 OAuth。如果没有,我该如何解决这个问题?

【问题讨论】:

    标签: google-oauth


    【解决方案1】:

    目前不支持此功能。我提交了功能请求并将更新进度。

    【讨论】:

    • 现在是 2014 年 10 月,公共 IP 仍然无法使用 :(
    • 现在是 2015 年 1 月,公共 IP 仍然无法使用 :(
    • 现在是 2015 年 9 月,公共 IP 仍然无法使用 :(
    • 现在是 2016 年 10 月,公共 IP 仍然无法使用 :(
    • 现在是 2019 年 2 月,公共 IP 仍然无法使用 :(
    【解决方案2】:

    我也遇到了这个问题,所以我输入了一个带有 .com 扩展名的 URL,并将其输入到我的 /etc/hosts 文件中。像魅力一样工作。

    不过,现在我的整个应用程序都必须在一个明显“实时”的域上开发,这真是太糟糕了。

    【讨论】:

    • 我也一样。我在直播域上有mydomain.com。我必须将mydomain-localhost.com 添加到 Windows 主机文件并在 Google api 中输入此域。太糟糕了。
    • 这仅适用于 LAN 网络中的单台计算机。对于多台计算机,则无法访问上述 URL。
    【解决方案3】:

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

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

    【讨论】:

    • 感谢您的回答,它对我有用。我忘记了亚马逊给出的主机名(ec2-<public-ip>.<region>.compute.amazonaws.com)应该已经可以工作了,这个链接给了我。 :)
    • @ciuncan 我正在使用 AWS Cloud9 并从该方法中获取了我的主机名,但即使我已添加到白名单和重定向 URI,仍然收到错误消息。你是怎么解决这个问题的?我试过有和没有端口
    • 我的主机名只是使用此工具的 IP 地址。所以这行不通。
    【解决方案4】:

    尝试使用完整的服务器名称。

    它是从 MyPC/Properties 中获得的...类似于http://mypcname.mydomain.name:8080

    【讨论】:

      【解决方案5】:

      您可以使用动态 DNS。我使用了提供免费解决方案的 ddns.net。基本上,您输入您的 FQDN:yourcompany.ddns.net 作为您的域。查找 IP 地址时,.net 域指向 ddns;查找 ddns.net 时,它会在其数据库中查找贵公司,并返回 IP。所以我的看起来像这样:https://wigwam.ddns.net,一切正常。您不需要购买域名,您可以替换您已知的 IP,Google 对此很满意。

      当然,您的 IP 必须是静态的。

      【讨论】:

      • 这个解决方案不好,因为 dns 会每 30 天自动过期。
      • 不能期望任何免费的东西都能满足任何 SLA,或者免费提供很长时间。 OP 需要测试,这提供了这样做的机会。
      【解决方案6】:

      是的,到目前为止,您仍然需要拥有一个域名才能在您的应用程序中使用 Google OAuth。如果您有一个静态公网 IP 并且不想购买域名,您可以使用来自 FreeDNS 的免费子域链接到您的公网 IP。使用 Django 应用程序对我来说似乎工作得很好。

      【讨论】:

      • 创建一个 Instant Free 子域并在您的应用程序中使用它所有 DNS 名称都很棒
      【解决方案7】:

      您可以使用 xip.io 来解决它。

      例如:“192.168.0.50.xip.io:3000”将解析为“192.168.0.50:3000”

      【讨论】:

      • 有了这个,我可以在开发期间为我的应用设置一个谷歌登录机制。我能够使用我的 docker-machine ip 地址配置 redirect_uri。太好了!
      • xip.io 在其他情况下也非常方便!谢谢
      • 我尝试了您的解决方案。它完成了这项工作,但是当我使用 chrome 时,它​​会显示该网站可能具有“欺骗性”的警告消息
      • 这对我来说工作得很好,但后来它没有..,为了让它再次工作,我不得不将http://xip.io 和我的 IP 的 xip 地址列入白名单(ej.http://192.168.0.50.xip.io:3000 )。请注意,您在浏览器中输入的地址必须与您列入白名单的地址完全相同。
      • xip.io 是一个很棒的解决方案。
      【解决方案8】:

      呼应布雷诺在回应他之前的评论时所说的话:

      抱歉,这里没有更新。基本的应用程序验证活动继续使基于 IP 地址的应用程序的支持不太可能。这些验证活动对于防止滥用用户帐户是必要的。此外,自从请求此功能以来,设置专用域的成本已大大降低。请在此处阅读有关可能选项的其他回复。

      您可以详细了解 Google 的应用验证要求 [1] 和 Google 要求安全处理数据的政策 [2]。

      [1]https://support.google.com/cloud/answer/9110914?hl=en

      [2]https://developers.google.com/identity/protocols/oauth2/policies#secure-response-handling.

      【讨论】:

        【解决方案9】:

        xip.io 不再起作用,您可以以相同的方式使用 nip.io,例如:
        10.0.0.1.nip.io:8000 将解析为 10.0.0.1:8000

        【讨论】:

        • 你也可以把你的ip改成localhost:8000或者127.0.0.1:8000就可以了
        • google 允许 localhost 进行测试,op 可能希望指向自定义 IP。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-31
        • 2017-01-03
        • 1970-01-01
        • 2020-02-19
        • 1970-01-01
        • 2012-11-03
        相关资源
        最近更新 更多