Facebook应用程序:允许单个Facebook应用程序在任意专用网络地址上运行

Facebook应用程序:允许单个Facebook应用程序在任意专用网络地址上运行,facebook,testing,Facebook,Testing,我有一个开发服务器(Java servlet容器)在我的专用网络(IP范围192.168.0.0到192.168.255.255)内的计算机上运行。此开发服务器执行我的集成测试环境。此测试环境有自己的Facebook应用程序ID。让服务器在192.168.x.y范围内运行,允许我的同事测试网站,使用他们的Facebook帐户登录我的本地网站等 在->中的Facebook应用程序设置->位于“基本设置”->下的“使用Facebook登录的网站”字段中,我设置了http://192.168.2.10

我有一个开发服务器(Java servlet容器)在我的专用网络(IP范围
192.168.0.0
192.168.255.255
)内的计算机上运行。此开发服务器执行我的集成测试环境。此测试环境有自己的Facebook应用程序ID。让服务器在
192.168.x.y
范围内运行,允许我的同事测试网站,使用他们的Facebook帐户登录我的本地网站等

在->中的Facebook应用程序设置->位于“基本设置”->下的“使用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应用程序允许“一系列IP地址网站登录Facebook”?您还可以建议什么其他解决方案

我的同事也应该能够在他们自己的机器上启动开发服务器,使用他们自己的专用网络地址。因此,同一个Facebook应用程序ID应在具有不同IP地址的不同机器上工作,并且私有网络中的每个人都可以访问

请注意,将“使用Facebook登录的网站”设置为
localhost
将使开发服务器仅对其运行的同一台计算机可用。不幸的是,这会阻止同事访问此开发服务器实例

更新
文件错误:

如果您在Windows上运行,您可以尝试在C:\Windows\System32\drivers\etc中更改主机文件 并将你的IP添加到一个虚构的域中(你的同事也应该这样做),然后将该域放入Facebook设置面板。
我不确定这一点,请告诉我它是否有效:)

据我所知,您无法在应用程序设置中设置IP范围,重定向uri通常用于处理带有域名的URL,这通常适用于公共网站

避免此问题的最佳方法是确保您的本地开发服务器始终获得相同的IP,如果您正在编写服务器,这通常是一个很好的做法。 根据网络设置的不同,有几种方法,以下是两种选择:

  • 将DHCP服务器设置为始终将相同的IP分配给您的开发服务器MAC地址
  • 稍微改变一下规则,设置计算机以声明未使用的IP地址。DHCP服务器通常按顺序分配IP(从192.168.1.1开始,一直到192.168.254.254),因此让您的计算机声明范围中较高部分的IP(首先Ping IP以确保未使用)

  • 不要使用IP地址,而是使用localhost

    所以hxxp://192.168.1.20 将成为hxxp://localhost

    (将xx替换为tt)


    这将解析回本地计算机,无论其IP地址是什么。我假设您的开发服务器正在您的PC上运行,使用WAMP或类似的东西。我之所以做出这个假设,是因为您声明它必须在任何网络环境中的任何笔记本电脑上运行。

    如果您拥有一个域,您可以创建一个子域test.mydomain.com,指向192.168.2.109

    当您的地址需要再次更改时,您可以相应地更改条目

    DNS条目没有理由不能指向192.168范围内的IP地址。对于网络之外的人来说,它没有多大用处,因为他无法从外部访问您的IP地址,但对于网络内的同事来说,它会起作用


    如果同事希望在自己的电脑上运行web应用程序,他当然可以使用自己的主机文件覆盖此设置。

    如果您可以不用使用localhost,那么有一个非常简单的方法: 将facebook应用重定向到(或服务器在本地主机上侦听的任何端口)。一位仁慈的开发人员拥有lvh.me域,并将DNS设置为指向localhost。我尝试过这个,这就是我用于开发测试的方法。
    类似地,您也可以这样做,并将您拥有的域的DNS记录指向一系列本地ip。我不熟悉DNS,所以我不知道如何设置它,或者是否可能

    谢谢你的解决方案。我想了想。在我的私人网络中更改每个同事计算机上的主机文件是不实际/不可能的(例如,存在Android客户端)。此外,据我所知,Window的主机文件语法不支持IP地址通配符。因此,当服务器IP发生变化时(例如,由于DHCP或运行在不同机器上的服务器),我需要更新每台机器上的主机文件。以下是我面临的挑战/限制:任何开发人员都必须能够在任何网络环境下在自己的笔记本电脑上启动web应用程序:在工作场所、在家中、,在业务合作伙伴的国外网络。尤其是国外的网络使用案例,使得依赖永不改变的IP变得不可能。“每个开发人员都可以启动web应用程序”用例使得只有一台IP/一台中央开发服务器变得不可能。为什么不在您的DCHP服务器上设置一个静态租约?请添加您的附加约束。在localhost上运行开发服务器使同事无法访问此服务器。同事应该能够访问服务器,以使用他们的Facebook帐户登录并测试/玩网站。因此只有一个开发服务器,但您希望人们能够从任何地方访问它吗?如果是这种情况,那么您将无法使用本地寻址,因为如果同事位于不同的网络上,它将拥有自己的本地网络。关于本地寻址(192.168、10.0等)的全部要点是