如何在开发Facebook图形网站时使用localhost?

我想使用localhost使用图形api开发网站facebook应用程序。 我在asp.net c#工作

在以前的facebook的api中,我在应用程序设置的连接URL中写了http:// localhost:4300 / 。

现在它起作用了。 它一直告诉我应用程序名称发生错误。 请稍后再试。

有人建议吗?

**如果我上传网站,并使用网站coonecturl,它是有效的。

Facebook不关心您的服务器所在的实际IP地址 – 但它会检查引用页面的域名是否与您在Facebook注册的域名相同。 在开发过程中使其工作的诀窍是找到一种方法来使用您的域名,即使您只是在本地计算机上进行开发。

如果您可以完全控制DNS记录,则可以添加主机记录(例如“test.yourdomain.com”),该记录指向开发计算机的真实IP地址(如果它是静态IP),或者只是指向127.0。 0.1

如果您无权访问DNS,那么在开发过程中解决此问题的最简单方法是在计算机的hosts文件(OSX和大多数其他unix机器上的’/ etc / hosts’)中添加一个条目,指向您的域名在facebook上注册到您当地的主机。 所以你要添加这样的一行:

127.0.0.0 test.yourdomain.com 

到主机文件的末尾。 这意味着如果您现在在Web浏览器中输入test.yourdomain.com,它将解析为您的本地计算机。

现在 – 在Facebook应用程序设置的“网站”部分确保您已将您的域名添加到设置的“站点域”部分 – 这将意味着Facebook将接受来自您域的任何子域的请求 – 换句话说,它将接受来自“www.yourdomain.com”(您的生产服务器)和“test.yourdomain.com”(您的本地开发机器)的请求。

现在你应该能够在浏览器中使用“test.yourdomain.com”url而不是“localhost”在本地计算机上进行开发,一切都应该可行。

OH – 还有一件事 – 如果你的开发服务器没有在端口80上运行,facebook重定向uri也需要有一个端口号,但它在匹配域url时包含这个端口号(坦率地说我认为这是一个bug facebook API)。 这意味着如果您的开发服务器(例如)在端口8080上运行,那么您需要在重定向URI中的主机名末尾添加“:8080”,但如果您的生产服务器在端口80上运行,那么您不应该在重定向uri中加上“:80”,否则它只会在人们明确将端口号包含在用于查看页面的URL中时生效(在生产服务器中不太可能)。 这在实践中意味着你必须有一个条件,以便在生成facebook身份validationURL时,如果它不是端口80,则只包括端口号。

将“localhost”添加到Facebook上应用的“App Domain”设置。 此外,如果您正在执行诸如将“MyApp.test”重定向到本地服务器上的127.0.0.1之类的操作,您还可以将“MyApp.test”添加到“App Domain”并且它将起作用。

我在寻找这个问题的解决方案之后尝试了这个。 这是一个非常简单的解决方案。

在应用的Facebook配置中检查以下基本设置:

  • 命名空间已设置
  • App Domain包含“localhost”
  • Canvas URL和Secure Canvas URL在其URL中都有一个“localhost”域

如果您在保存应用程序的配置设置时收到“应用程序名称”错误,您确定该应用程序的名称是否有效且尚未使用? 我们一直使用localhost(使用ASP.Net,IISExpress和非常高的端口号),在不同的机器上有四个或五个不同的应用程序和多个用户,并且永远不需要做一些人在他们的答案中描述的任何额外步骤。

编辑:重新阅读其他答案后,我猜有些开发人员正在开发与生产相同的Facebook应用程序,所以他们需要将他们的机器映射到生产域? 我们不这样做,我们有两个“应用程序”。 一个用于使用localhost配置进行测试,另一个用于生产。 我们有一个组件可以在运行时确定它所处的环境并构建所有必要的URL,例如带有App ID和App Secrets的OAuth重定向,因此我们总是运行相同的代码,只是在不同的服务器上部署了不同的配置。

您确定该问题与您的Web服务器的DNS名称和/或端口有关吗? 如果是,您可以使用本地IIS而不是webdev服务器,配置网站yourdomain.com并向主机添加条目,说127.0.0.1 yourdomain.com

如果我正确理解您正在尝试做什么以及应用程序设置在Facebook的网站上,Facebook将无法使用“localhost”连接到您的计算机。 获取计算机的IP地址,然后在应用程序设置页面中键入该地址。

要找到您的IP: http : //whatismyipaddress.com/

您必须创建一个ssh隧道FROM开发服务器到您的localhost计算机。 每个dev服务器请求都将由您的计算机处理并发回。

您无法在Facebook设置FYI上添加顶级域名