5

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

https://developers.facebook.com -> 在 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 应用程序允许“使用 Facebook 登录的 IP 地址网站范围”?您还能建议哪些其他解决方案?

我的同事们也应该能够在他们自己的机器上使用他们自己的私有网络地址启动开发服务器。因此,同一个 Facebook App ID 应该可以在具有不同 IP 地址的不同机器上运行,并且仍然可供专用网络内的每个人访问。

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

更新

提交的错误:https ://developers.facebook.com/bugs/606277079382609

4

5 回答 5

3

If you could get away of using localhost, then there is a very simple way: Make the facebook app redirect to http://lvh.me:3000/ (or whatever port your server is listening on localhost). A benevolent developer owns the lvh.me domain and had the DNS setup to point to localhost. I've tried this and that's what I used for development testing. Similarly, you could do stuff like that and points a DNS record of a domain you own to a range of local ip. I am not familiar with DNS so I am not sure how to set it up or if it's possible.

于 2012-12-23T04:10:02.537 回答
1

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

于 2012-12-12T15:11:35.360 回答
1

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

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

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

如果同事想在自己的 PC 上运行 Web 应用程序,他当然可以使用自己的 hosts 文件覆盖此设置。

于 2012-12-22T22:54:49.393 回答
1

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

所以 hxxp://192.168.1.20 会变成 hxxp://localhost

(将 xx 替换为 tt)

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

于 2012-12-22T02:58:33.787 回答
1

据我所知,您无法在应用程序设置中设置 IP 范围,redirect_uri 通常用于处理带有域名的 url,这通常是公共网站的情况。

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

  1. 设置您的 DHCP 服务器以始终为您的开发服务器 MAC 地址分配相同的 IP
  2. 稍微改变一下规则并设置您的计算机以声明未使用的 IP 地址。DHCP 服务器通常按顺序分配 IP(将从 192.168.1.1 开始,一直到 192.168.254.254),因此让您的计算机在该范围的较高部分声明 IP(首先 Ping IP 以确保它没有被使用)
于 2012-12-18T22:27:23.720 回答