Oauth 2.0 错误:私有IP需要无效的\u请求设备\u id和设备\u名称

Oauth 2.0 错误:私有IP需要无效的\u请求设备\u id和设备\u名称,oauth-2.0,google-drive-api,google-oauth,Oauth 2.0,Google Drive Api,Google Oauth,我正在使用[localhost:8080]进行GoogleDriveAPI的开发。突然,我想在我的本地部署沙箱中测试它,它的IP地址为[192.168.1.1:8080]。根据这一点,我在开发人员控制台客户端回调URL中更改了凭据。我正在使用OAuth2WebServerFlow获得使用用户同意的刷新令牌。然后,将来我将使用刷新令牌和OAuth2WebServerFlow对用户进行身份验证。但我很惊讶——我发现了错误: 那是个错误。 错误:无效的\u请求 专用IP需要设备id和设备名称: 我不知

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

  • 那是个错误。 错误:无效的\u请求 专用IP需要设备id和设备名称:

  • 我不知道发生了什么,也不知道如何修复它。发生了什么事,我不明白,我得到了相同的错误,直到我把它从一个IP地址改为一个域名(在我的例子中是192.168.1.113改为localhost),所以看起来谷歌不会接受裸IP地址


    为您的沙盒使用域名,或者如果您没有本地域服务器,则设置本地域服务器。

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

    \Windows\System32\drivers\etc

    192.168.1.2   fakedomain.com
    

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

    值得注意的是,在Mac上,您可以通过以root用户身份编辑来完成同样的工作:

    /private/etc/hosts
    
    如上所述,添加一个类似的行

    192.168.60.10   fakedomain.com
    

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

    好的,我的Mac电脑也有同样的问题。以下步骤解决了该问题

    • 转到您的google开发控制台,选择凭据并将回调IP更改为类似的域。 在我的例子中,我使用的是烧瓶应用程序,因此5000端口是必需的

    • 接下来,在您的
      private/etc/hosts
      文件中添加一个新条目,将上述主机名与您的IP匹配,如下所示:

      # (example IP)
      172.1.1.1 myflask.com
      
    • 给Google一分钟时间更新您的凭据,然后访问您的网站


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

    将“192.168.1.2 fakedomain.com”添加到主机文件中
    重新启动windows


    更新google console 192.168.1.2更新至fakedomain.com

    编辑
    主机
    文件的替代方法是使用“魔法DNS”服务或(请参见编辑)

    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.xip.io:8080/auth/google_oath2/callback
    
    “重定向URI”似乎不接受通配符,因此需要在控制台中指定整个私有ip-xip.io

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


    2016年编辑:我听到关于xip.io DNS服务器不稳定的报道。有一个拷贝cat服务nip.io,其行为与xip.io完全相同,但在2016年7月期间,nip.io的回复率为100%,而xip.io的回复率为100%

    看起来这个线程也有同样的问题。我想知道我们是否有办法解决这个问题。任何人都可以分享关于这个问题的知识吗?嗨,谢谢你的编辑,我也在等待任何人分享一些关于这个问题的备用知识。很抱歉!我尝试了很多方法,但从阅读资料中没有一个成功的步骤。我希望谷歌方面能提供一些帮助,以备不时之需,但毫无用处。或者这是一种无法解决的问题。就像,解决方法可能会奏效,但下一个问题是在现实世界场景中部署的可行性。现在我刚刚确定,用户客户端Api访问需要域名,而不是回复域名。这对设备没有帮助对于需要从Android设备调用伪造域名的任何人来说,你必须是root和edit/system/etc/hosts。它在Android模拟器上工作。当我们谈论在云/互联网上真正部署时,这个修复方案的可行性如何。。。这主意不错,但在某些提供商/网络上没有解决问题:这是一篇三年前的博文,作者推测某个特定的硬件(“与使用BT HomeHub DNS的网络有关的东西”)引起了问题。我还没有在家里或办公室遇到问题,我不知道是什么会促使任何人故意阻止这项服务。这只是为了指出一个事实,即is不适用于某些提供商:在我的情况下是free.fr。这很有效!而且比编辑主机文件IMHO更好,因为对于Android或iOS开发,除非您将主机文件设为根目录,否则很难更改主机文件。这更容易。工作完美!非常感谢。
    http://192.168.1.1.xip.io:8080/auth/google_oath2/callback