如何在 Facebook 应用程序中添加本地主机:3000 以进行开发

28

我正在开发一个基于 Rails 4 的应用程序。在我的笔记本电脑上,开发是在 localhost:3000 上完成的。该网站的实际域名为 roomidex.com

我该如何设置 Facebook 应用程序,以便在生产环境和开发环境中都能正常工作?

以下是当前的配置:

App Domains: roomidex.com

Website With Facebook Login: 
Site URL: http://www.roomidex.com

当我在 localhost:3000 上尝试进行 Facebook 登录时,出现了以下错误:

{
   "error": {
      "message": "Invalid redirect_uri: Given URL is not allowed by the Application configuration.",
      "type": "OAuthException",
      "code": 191
   }
}
8个回答

58
在 Facebook 应用程序页面上,点击“编辑应用”,然后在左侧导航中点击“高级”。然后,在“有效的OAuth重定向URI”中添加 http://localhost:3000 ... 或者您希望被接受的重定向是什么。

7
最近Facebook更改了其用户界面,因此这个答案似乎不再有效。您知道如何在新的用户界面下操作吗? - Thinking Sites
对我有用:创建新应用程序->转到高级选项并在“有效的OAuth重定向URI”下粘贴http://localhost:3000 - pastullo
5
了解 - 只是想补充一下,Facebook现在有测试应用程序支持,因此您可以拥有一个生产应用程序,从中创建一个测试应用程序,并单独管理OAuth重定向URI(当然不要忘记使用测试应用程序凭据)。这可以给您更好的控制,并且不会将本地主机开放给您的生产应用程序。 - Michael
4
新的版面布局位置在“设置”下(左侧导航),然后是“高级”(页面中部顶部)。 - AaronM
3
对我来说,在左侧菜单的“产品”标题下方,“Facebook 登录”选项中。 - Julian K

8
您可以创建一个连接到主应用的测试应用。在您的主应用的仪表板或设置页面上,向下滚动,您会看到在页面左侧菜单中运行的"测试应用程序"。测试应用程序将继承主应用程序的设置,但它将永久处于开发模式,并且它将拥有自己的ID。
更多关于测试应用程序的信息,请参考此处: https://developers.facebook.com/docs/apps/test-apps/ 设置本地主机上的应用程序协议已更改。在设置好您的测试应用程序后,这里解释了设置它在本地主机上工作的步骤: https://dev59.com/EmEi5IYBdhLWcg3wZ7y8#24253054

4
您的错误是说:
本地主机 URL 在应用程序中不允许。我知道,FB 不介意在这些时刻解释该怎么做,然而,就我而言,我已经找到了解决方法。
基本上,您需要在应用程序中“批准” locahost url。
以下是您需要执行的操作:
1. 转到应用程序编辑/摘要页面。
2. 在第四个字段“应用程序域”中,您应该已经有 roomidex.com,所以添加另一个地址 localhost。
3. 上述 URL 仅在将它们放入选项卡时有效,您设置如何将应用程序与 Facebook 集成(带有 Facebook 登录的网站,Facebook 应用程序,移动 Web 等)。
4. 我这样做:我将正常工作的 URL,即 roomidex.com,放入“带有 Facebook 登录的网站”,将我的测试 URL,即 localhost,放入“Facebook 应用程序”或“页面选项卡”。

1

2015年6月

前往我的应用程序 > 设置 > 基本信息

应用程序域名

  • localhost

网站

不幸的是,它不能在80端口或没有任何端口的情况下工作。


0

localhost添加到测试应用程序中的Valid OAuth重定向URI对我没有起作用,但是添加127.0.0.1就可以了。


0

Facebook现在要求“有效的OAuth重定向URI”必须是https。

为了在本地使用https(localhost:3000),我使用了[ngrok][1],它可以通过提供隧道来使用https。具体步骤如下:

  1. 我去他们的网站下载了他们的程序
  2. 我解压了程序文件
  3. 在我的控制台中,我进入了ngrok所在的目录,并在我的Windows机器上输入了'grok http 3000',其他人可能会使用'./grok http 3000'
  4. 输入后,ngrok提供了一个https地址,我将其放入Facebook的“有效的OAuth重定向URI”字段中
  5. 然后我启动了我的服务器,并能够使用该https地址访问它,而不是localhost:3000

-1

只需创建两个应用程序。

一个用于测试,另一个用于发布。您不能使用单独的URL配置提供应用程序。


这不是很多额外的工作吗?为什么Facebook不允许在同一个应用程序中添加本地主机? - Don P
1
Facebook允许“测试应用程序”。首先创建一个生产/发布应用程序,然后创建该应用程序的子级进行测试和其他目的。https://developers.facebook.com/docs/apps/test-apps/ - jkdev

-4

只需在您的hosts文件中编辑指向本地主机的域名,就可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接