如何在本地测试Facebook Connect


193

我使用ASP .NET和Facebook Connect API。但是,当我运行该应用程序并按“连接”按钮时,它返回网站而不是返回测试本地服务器(http:// localhost:xxxx / test.aspx),所以我如何在本地测试Facebook(即,如何更改回调网址)?


4
答案在这里:forum.developers.facebook.com/viewtopic.php?pid=116136 您必须编辑'C:\ WINDOWS \ system32 \ drivers \ etc \ hosts'文件以使您的域进入您的本地主机
Haytham

101
从Facebook的角度来看,该系统似乎实施得很差。在他们看来,似乎没有人愿意在实时服务器上测试该功能。这里给出的两个解决方案-编辑本地主机文件以欺骗生产服务器并将其重定向到localhost,以及暂时将Facebook上的实时生产URL更改为localhost,这在Facebook方面都是非常糟糕的设计。Facebook需要为其系统增加某种测试能力。
Paul Legato

2
不错的解决方法是拥有3个应用程序-> live,QA和Dev。因此,如果您的主要应用是apps.facebook.com/ohnice/质量检查,开发人员可以是apps.facebook.com/ohnice_qa_sd/是apps.facebook.com/ohnice_dev_fg/是随机的,那么当您的房子里就不会有多余的访客不整洁。
tgkprog

1
@PaulLegato现在完成(几年后...)。请参阅我的解决方案或使用测试功能的解决方案之一。
Erdal G.

Answers:


236

找出来就很简单。

打开/etc/hosts(unix)或C:\WINDOWS\system32\drivers\etc\hosts

如果您的域名是foo.com,请添加以下行:

127.0.0.1    local.foo.com

测试时,请local.foo.com在浏览器中打开它,它应该可以工作。


4
要在MAC上编辑主机文件,然后在终端中运行“ sudo pico / private / etc / hosts”,进行编辑并按“ ctrl X”进行保存
Christoffer

@Christoffer:我相信/ private / etc只是/ etc的符号链接,因此/ etc / hosts和/ private / etc / hosts是同一文件。
freeall 2013年

1
您是对的...但是我们中的某些人需要吃饱饭,说“打开/ etc / hosts”还不够;)FB对于我来说仍然在本地无法使用此解决方案。我没有使用facebook JS
Christoffer,

5
直到最近这一直为我工作,但是现在我connection refused尝试登录时收到异常消息,这可能是由于Facebook方面的变化。任何解决方法的想法都将受到赞赏。
onurmatik 2013年

1
如果要访问本地运行的Rails应用程序,则可能必须在浏览器中访问local.foo.com:3000`,因为Rails应用程序通常在该端口上运行。
David Tuite 2013年

102

www.facebook.com/developers/上编辑您的应用程序并将“站点URL”设置为“ http:// localhost / myapppath”。

完成后,将其改回。


19
Facebook不会“连接”回您的服务器。他们的JS。并且JS在您的浏览器上下文中运行。哪个知道“ localhost”指向的位置。
Alex

它不会让我添加“ localsite ”,我必须确保在其中有一个点。这工作:“ local.site
皮特

某些FB功能不适用于此功能。例如-将成就保存到FB服务器。它需要HTTPS,所以我的本地主机技巧不起作用:(
Kostadin

2
值得注意的是,对应用程序表单的验证要求您在URL中使用localhost,例如,http://localhost/myapp而不是http://myapp
graham

1
如果您使用其他端口,请使用以下模式:localhost:xxxx),例如:localhost:8080
m0z4rt

77

我建议在https://developers.facebook.com/apps上创建一个测试应用程序(仅适用于开发环境),并将:Website with Facebook Login属性设置为您的localhost:[port]设置。
此选项可以正常运行,无需更改主机。
上线后,请记住将appId更改回生产应用程序。

编辑 -在最新的fb版本中,您可以在settings标签下找到它。 在此处输入图片说明


2
或者只是将单独的配置文件用于开发,暂存和实时运行。
克里斯·巴里

1
找不到“具有Facebook登录名的网站”。
yehe 2014年

5
看来您必须单击“ +添加平台”大的灰色水平按钮。那里有“网站”
Luciano

75

Facebook已添加了测试版本功能。

首先,添加您的应用程序的测试版本:创建测试应用程序

创建测试应用

然后,改变网站的URL为“ HTTP://本地主机 ”下的网站,并按下保存更改

在此处输入图片说明

仅此而已,但要小心:应用程序ID应用程序秘密密钥对于应用程序及其测试版本是不同的!


什么是设置面板中的App Domain。我正在使用Facebook登录名开发离子应用程序
Chirag thaker 2016年

1
@Chiragthaker这是将托管生产应用程序的域
Erdal G.

3
就我而言,这比编辑hosts文件要好得多,因为不需要在测试服务器上使用HTTPS。
PetrDlouhý19年

39

您不必做任何困难!

Facebook的设置→基本:
本地主机应用程序 域”字段,然后点击+添加平台选择网站

之后,在Site Url字段中输入您的本地主机URL
(例如:)http://localhost:1337/something

这将允许您在本地测试您的Facebook插件。


1
路径file:/// android_assets / www中的文件是否有解决方法?Facebook不允许网站网址使用该路径
Vignesh Subramanian 2015年

现在必须为https
Simon_Weaver

@Simon_Weaver您从哪里获得此信息的?它记录在某处吗?
kolistivra


您从该链接发送的@Simon_Weaver中说:“您仍然可以将HTTP与“ localhost”地址一起使用,但前提是您的应用仍处于开发模式。
kolistivra

5

Facebook似乎随机禁用了将localhost设置为您的Facebook应用程序上的域的功能。我发现最简单的解决方法是将本地主机隧道传输到网络。可以使用http://progrium.com/localtunnel/或使用自定义网址免费完成此操作(更方便,因为您不必每次都在facebook中更改网址)https://showoff.io


3
另一个隧道选择是ngrok.com
Mohamed Selim

3

我无法使用其他解决方案...对我有用的是安装LocalTunnel.net(https://github.com/danielrmz/localtunnel-net-client),然后在Facebook上使用生成的URL。


1

看起来FB刚刚再次更改了应用程序开发页面,并添加了一个称为“服务器IP白名单”的功能。

  1. 转到您的应用,然后选择设置->高级标签
  2. 获取您的公共IP(如果您使用Google“ Whats My IP”,Google会告诉您)
  3. 将您的公共IP添加到服务器IP白名单,然后单击底部的“保存更改”。

如果来自不同位置的多个开发人员正在该网站上工作怎么办?我们使用VM(无业游民),因此每个开发人员的IP都相同。遗憾的是,facebook不允许在白名单中使用本地IP。没用
ProblemsSuSumit

如果我没看错您的评论,那应该不是问题。您需要输入您的公共IP,您说的对每个开发人员都是一样的(您的意思是不一样的)。如果您在不同的站点上有多个具有不同IP的开发人员,则可以使用VPN通过1个IP路由所有流量。
sevensevens14年

不,在不同位置的不同计算机的公共IP当然是不一样的,只是每台计算机上的本地IP是相同的。(例如localhost)。我不想路由任何东西。现在,我在FB应用程序中使用localhost(仅作为示例)-效果很好。但是页面上线后我需要一个解决方案。Facebook允许在应用程序内部创建“ Test-Apps”,这也许是解决方案,但我还没有尝试过。编辑:似乎这是解决方案
ProblemsOfSumit

1

转到画布页面。在浏览器中查看。复制地址栏文本。现在转到您的Facebook应用程序转到编辑设置

在网站中,在网站网址中粘贴该地址

在facebook集成中,再次将该地址粘贴到画布url中

以及需要画布URL或重定向URL的相同代码。

希望会有所帮助..


-6

创建2个应用程序并

/initializers/env_variables.rb中

if Rails.env == 'development'
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
else
    ENV['FB_APP_ID'] = "HERE"
    ENV["FB_SECRET"] = "HERE"
end
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.