我的专用网络内的计算机上运行了一个开发服务器(Java servlet容器)(IP范围192.168.0.0
到192.168.255.255
)。此开发服务器执行我的集成测试环境。此测试环境具有自己的Facebook App ID。让服务器在192.168.x.y
范围内运行允许我的同事测试网站,使用他们的Facebook帐户登录我的本地网站等。
https://developers.facebook.com - >在Facebook Apps设置中 - >位于“基本设置”下 - >在“有Facebook登录的网站”字段中,我设置了http://192.168.2.106:8080
,因为这是我的开发服务器所绑定的地址 - 端口组合。
由于DHCP,我的计算机现在的IP地址略有不同,即192.168.2.109
。每当我启动我的服务器,然后尝试做任何与Facebook-API相关的事情(例如Facebook登录)时,我从Facebook收到以下错误消息
{
"error": {
"message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.",
"type": "OAuthException",
"code": 191
}
}
有没有办法让Facebook应用程序允许“使用Facebook登录的一系列IP地址网站”?您能提出哪些其他解决方案?
我的同事也可以使用自己的专用网络地址在自己的计算机上启动开发服务器。因此,相同的Facebook App ID应在具有不同IP地址的不同计算机上运行,并且仍可供私有网络内的所有人访问。
请注意,将“使用Facebook登录的网站”设置为localhost
会使开发服务器仅对其运行的同一台计算机可用。不幸的是,这会阻止同事访问此开发服务器实例。
答案 0 :(得分:3)
如果您可以放弃使用localhost,那么有一种非常简单的方法: 使Facebook应用程序重定向到http://lvh.me:3000/(或服务器正在侦听localhost的任何端口)。一个仁慈的开发者拥有lvh.me域并且DNS设置指向localhost。我试过这个,这就是我用于开发测试的东西。 同样,您可以执行类似的操作,并将您拥有的域的DNS记录指向一系列本地IP。我不熟悉DNS所以我不确定如何设置它或是否可能。
答案 1 :(得分:1)
如果您在Windows上运行,可以尝试在C:\ Windows \ System32 \ drivers \ etc中更改主机文件 并将您的IP添加到虚构域(您的同事也应该这样做)并将该域放在Facebook设置面板中。 我不确定这个,所以请告诉我它是否有效:)
答案 2 :(得分:1)
据我所知,您无法在应用程序设置中设置IP范围,redirect_uri通常用于处理具有域名的网址,这通常与公共网站一起使用。
避免此问题的最佳方法是确保本地开发服务器始终获得相同的IP,如果您正在编写服务器,这通常是一种很好的做法。 根据网络设置,有几种方法可以做到这一点,这里有两个选项:
答案 3 :(得分:1)
请使用localhost。
,而不是使用IP地址所以hxxp://192.168.1.20将成为hxxp:// localhost
(用tt替换xx)
无论IP地址是什么,它都会解析回本地计算机。我假设您的开发服务器在您的PC上运行,使用WAMP或类似的东西。我之所以画这个假设是因为你声明它必须在任何网络环境中的任何笔记本电脑上运行。
答案 4 :(得分:1)
如果您拥有域名,则可以创建指向192.168.2.109的子域名test.mydomain.com。
当您的地址再次更改时,您可以相应地更改条目。
没有理由说DNS条目无法指向192.168范围内的IP地址。对于网络外的人来说,它不会有多大用处,因为他无法从外部访问您的IP地址,但对于网络中的同事来说,它可以正常工作。
如果同事想要在自己的PC上运行Web应用程序,他当然可以使用自己的主机文件覆盖此设置。