Oauth 2.0 错误:私有IP需要无效的\u请求设备\u id和设备\u名称
我正在使用[localhost:8080]进行GoogleDriveAPI的开发。突然,我想在我的本地部署沙箱中测试它,它的IP地址为[192.168.1.1:8080]。根据这一点,我在开发人员控制台客户端回调URL中更改了凭据。我正在使用OAuth2WebServerFlow获得使用用户同意的刷新令牌。然后,将来我将使用刷新令牌和OAuth2WebServerFlow对用户进行身份验证。但我很惊讶——我发现了错误: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和设备名称: 我不知
我不知道发生了什么,也不知道如何修复它。发生了什么事,我不明白,我得到了相同的错误,直到我把它从一个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端口是必需的
- 接下来,在您的
文件中添加一个新条目,将上述主机名与您的IP匹配,如下所示:private/etc/hosts
# (example IP) 172.1.1.1 myflask.com
- 给Google一分钟时间更新您的凭据,然后访问您的网站
重新启动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