我正在尝试设置一个需要用户Google Latitude信息的网络服务,因此我使用Google OAuth获取用户授权。
然而,在为Web应用程序客户端ID设置重定向URI时,如果我将其设置为'http://PUBLIC_IP/',就会收到错误消息。
我需要与非本地用户进行测试(因此无法使用本地主机),所以我想知道是否必须拥有Web域才能使用Google的OAuth。 如果不是,我该如何解决这个问题?
我正在尝试设置一个需要用户Google Latitude信息的网络服务,因此我使用Google OAuth获取用户授权。
然而,在为Web应用程序客户端ID设置重定向URI时,如果我将其设置为'http://PUBLIC_IP/',就会收到错误消息。
我需要与非本地用户进行测试(因此无法使用本地主机),所以我想知道是否必须拥有Web域才能使用Google的OAuth。 如果不是,我该如何解决这个问题?
目前不支持此功能。我已经提出了一个功能请求,并将在进展方面进行更新。
更新: 必要的应用程序验证活动仍在继续,因此基于IP地址的应用程序的支持可能性很小。这些验证活动是为了提供对用户帐户的滥用保护而必需的。此外,自请求此功能以来,设置专用域名的成本已大大降低。请阅读此处其他响应,以获取可能的选项。
您可以使用xip.io来解决此问题。
例如:'192.168.0.50.xip.io:3000' 将解析为 '192.168.0.50:3000'
http://xip.io
和xip地址与我的IP(例如http://192.168.0.50.xip.io:3000
)都加入白名单。请注意,您在浏览器中输入的地址必须与您添加到白名单中的地址完全相同。 - Adrian Guerreroxip.io
已经更改为 nip.io
。 - Islam我也遇到了这个问题,所以我输入了一个带有 .com 后缀的 URL,并将其添加到了我的 /etc/hosts
文件中。效果不错。
但是非常糟糕的是,现在我的整个应用程序似乎都必须在 'live' 域上开发。
mydomain.com
。我必须将 mydomain-localhost.com
添加到 Windows 主机文件中,并在 Google API 中输入此域名。这太糟糕了。 - vee我使用了我的公共主机名。如果您有静态IP地址,则会更有帮助。我使用了http://www.displaymyhostname.com/来获取我的主机名。在创建新的Web应用程序客户端ID时,我将其直接插入已授权的JavaScript来源字段中。
附:我的主机名看起来像这样:111.111.111.111.static.exetel.com.au
目前来说,如果想在应用程序中使用Google OAuth,你仍然需要拥有一个域名。如果你有一个静态的公共IP地址,而又不想购买一个域名,那么你可以使用FreeDNS提供的免费子域名与你的公共IP地址关联起来。我曾经在一个Django应用程序中使用过这种方法,效果还不错。
回应Breno之前的评论:
很抱歉这里缺乏更新。必要的应用程序验证活动仍在继续,这使得基于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。
xip.io已经无法使用,作为替代方案,您可以使用nip.io,例如:
10.0.0.1.nip.io:8000将解析为10.0.0.1:8000
您可以将其用作解决方法。
看起来xip.io已经挂了,但是有一些替代品,比如sslip.io和nip.io。然而,我无法让它们中的任何一个工作。
最终,我将主文件服务器托管在主机上,并在192.168.1.xx IP地址上运行该服务器。然后在每台测试机器上(包括主机上的第二个服务器)运行服务器,所有这些服务器都在本地主机地址上。本地主机服务器接收到的任何请求都会被传递给192.168.1.xx服务器,从而允许在所有设备上进行测试。
这也适用于公共面向IP地址的情况。
ssh -L 8080:localhost:8080 user@<dev-server-address>
。 - theferrit32