【问题标题】:Error: invalid_request device_id and device_name are required for private IP错误:invalid_request device_id 和 device_name 是私有 IP 所必需的
【发布时间】:2014-09-04 08:21:05
【问题描述】:

我正在使用 [localhost:8080] 使用 Google Drive API 进行开发。突然,我想在我的本地部署沙箱中测试它,它的 IP 地址为 [192.168.1.1:8080]。根据我更改了开发人员控制台客户端回调 URL 中的凭据。我正在使用 OAuth2WebServerFlow 来获取用户同意的刷新令牌。然后在将来我使用刷新令牌和 OAuth2WebServerFlow 来验证用户。但我很惊讶——我得到了错误:

  1. 这是一个错误。 错误:invalid_request 私有 IP 需要 device_id 和 device_name:

我不知道发生了什么或如何解决它。怎么回事,没看懂

【问题讨论】:

  • 看起来这个线程stackoverflow.com/questions/22638427/…有同样的问题。
  • 如果我们有任何办法解决这个问题,我正在徘徊。
  • 如果有知道的请分享一下?
  • 您好,感谢您的编辑,我也在等待是否有人分享一些备用的知识。
  • 对不起!我已经尝试了很多方法来弄清楚,但没有一个从读数中成功的步骤。如果谷歌方面有任何帮助,我希望得到一些回应,但它没有用。或者这是一种无法解决的问题。

标签: oauth-2.0 google-drive-api google-oauth


【解决方案1】:

编辑hosts 文件的替代方法是使用“Magic DNS”服务http://xip.io/http://nip.io/(见编辑)

xip.io 是一个神奇的域名,可为任何 IP 地址提供通配符 DNS。假设您的 LAN IP 地址是 10.0.0.1。使用 xip.io,

        10.0.0.1.xip.io   resolves to   10.0.0.1
    www.10.0.0.1.xip.io   resolves to   10.0.0.1
 mysite.10.0.0.1.xip.io   resolves to   10.0.0.1
foo.bar.10.0.0.1.xip.io   resolves to   10.0.0.1

使用此服务,您可以指定解析为私有地址的公开域。

在控制台中,如果您的重定向 URI 是(您希望拥有的内容):

http://192.168.1.1:8080/auth/google_oath2/callback

替换为:

http://192.168.1.1.xip.io:8080/auth/google_oath2/callback

“重定向 URIs”似乎不接受通配符,因此需要在控制台中指定整个私有 ip-xip.io。

我与 xip.io 没有任何关系;我只是一个满意的用户。

2016 年编辑:我听说过 xip.io DNS 服务器不稳定的报告。有一个模仿服务 nip.io 的行为与 xip.io 完全相同,但在 2016 年 7 月期间,nip.io 的响应率为 100%,而 xip .io 没有。

【讨论】:

  • 好主意,但在某些提供商/网络上无法解决:andycroll.com/mac/ruby/xip-io-doesnt-work-on-bt
  • 那是一篇三年前的博文,作者推测是某个特定的硬件(“与使用 BT HomeHub DNS 的网络有关”)引起了问题。我还没有在家里或办公室遇到问题,我不知道是什么促使任何人故意阻止这项服务。
  • 这只是为了指出它不适用于某些提供商的事实:在我的情况下是 free.fr。
  • 这行得通!并且比编辑主机文件恕我直言更好,因为对于 Android 或 iOS 开发来说,除非您根目录,否则很难更改主机文件。这要容易得多。
  • 完美运行!谢谢
【解决方案2】:

在进行 Oauth 调用时,Google 不会接受本地(私有)IP 地址。我的解决方法是在我的 Windows 主机文件中为本地 IP 添加一个条目:

\Windows\System32\drivers\etc

192.168.1.2   fakedomain.com

然后在他们的开发控制台中向 Google 注册 fakedomain.com。这对他们来说似乎是一个“真实”域,但仍会在您的浏览器中解析为本地 IP。我确信在 Mac 或 Linux 上也可以使用类似的方法。

【讨论】:

  • 这就像,你的工作可能会奏效,但下一个问题是在现实世界场景中部署的可行性。现在我刚刚解决了用户客户端 Api 访问需要域名的任何方式,谢谢回复。
  • 对设备没有帮助
  • 对于需要从 Android 设备调用 fakedomain 的任何人,您必须是 root 并编辑 /system/etc/hosts。它适用于Android模拟器
【解决方案3】:

编辑:仅在本地开发时相关。

好的,我在我的 Mac 上遇到了同样的问题。以下步骤解决了问题

【讨论】:

  • 当我们谈论真正在云/互联网中部署时,这个修复有多可行......只是徘徊。
【解决方案4】:

在我将其从 IP 地址更改为域名(在我的情况下为 192.168.1.113 为 localhost)之前,我遇到了同样的错误,因此看起来 Google 不会接受裸 IP 地址。

为您的沙箱使用域名,或者如果您没有本地域服务器,请设置一个本地域服务器。

【讨论】:

    【解决方案5】:

    值得注意的是,在 Mac 上,您可以通过以 root 身份进行编辑来做同样的事情:

    /private/etc/hosts
    

    添加与上述类似的行

    192.168.60.10   fakedomain.com
    

    【讨论】:

      【解决方案6】:

      在 \Windows\System32\drivers\etc\hosts 修改您的文件主机

      将“192.168.1.2 fakedomain.com”添加到主机文件中
      重启你的窗口

      更新 google 控制台 192.168.1.2 更新至 fakedomain.com

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-03
        • 2021-05-13
        • 2017-12-09
        • 2018-05-16
        • 1970-01-01
        • 2014-10-28
        • 1970-01-01
        相关资源
        最近更新 更多