在localhost进行Facebook开发


Answers:


246

编辑:2-15-2012这是如何对本地主机网站使用FB身份验证。

我发现设置第二个Facebook应用程序更具可伸缩性和便利性。如果要构建MyApp,那么我将创建第二个MyApp-dev。

  • https://developers.facebook.com/apps创建一个新应用
  • Website 2012年2月15日,新)单击“选择您的应用程序如何与Facebook集成”下的复选框(在最新的Facebook版本中,您可以在“设置”>“基本”>“添加平台”下找到它,然后选择网站)
  • 将“ 站点URL”字段(不是“ App Domains”字段)设置为http://www.localhost:3000 (此地址用于Ruby on Rails,请根据需要更改)

在此处输入图片说明

  • 在应用程序初始化程序中,放入代码以检测环境
    • 示例Rails 3代码
      如果Rails.env =='开发'|| Rails.env =='测试'
        Rails.application.config.middleware.use OmniAuth :: Builder做
          提供者:facebook,'DEV_APP_ID','DEV_APP_SECRET'
        结束
      其他
        # 生产
        Rails.application.config.middleware.use OmniAuth :: Builder做
          提供者:facebook,'PRODUCTION_APP_ID','PRODUCTION_APP_SECRET'
        结束
      结束
      

我更喜欢这种方法,因为一旦设置好,同事和其他机器就没有其他设置了。


3
+1真奇怪!人们说您不能将localhost添加为您的应用程序URL。但这只是对我有用。谢谢!
Keyne Viana

15
还是这样吗?我似乎无法添加localhost或127.0.0.1:5000或与我的Facebook应用程序域类似的任何内容。
皮特2012年

我只是尝试创建一个新的,然后遇到“无效域”问题。感谢您的抓捕
Eric Hu

1
@zoltarSpeaks查看我的最新答案。您必须使用其他字段,而不是“应用程序域”
Eric Hu

1
这会否覆盖initializers / devise.rb的config.omniauth:facebook,'APP_KEY','APP_SECRET',:scope =>“ email,offline_access ..”?
消失

26

当然可以,只需在您的app_domain中添加url本地主机(不带“ http”),然后在您的site_url中添加http://localhost(带有http)

更新资料

Facebook现在要进行一些更改,只需转到应用程序设置,然后在网站网址中添加http: //localhost并保留App Domain为空


这完全有效。栅栏一侧不需要任何东西。
godspeedelbow 2013年

10
这不再起作用了,您得到的错误是无法添加顶级域名
Josh Bedo 2014年

20

这是我的配置,适用于PHP API:

应用程式网域

   http://localhost

网站网址

   http://localhost:8082/

1
必须填写这两个文本输入,本地主机才能正常工作
paulruescher 2014年

19

注意:自2012年起,Facebook允许将“ localhost”注册为返回URL。对于其他提供商(例如Microsoft),您仍然可能需要类似的解决方法。

如果您需要在Facebook上注册的真实域名(例如my.really.own.domain.com),则可以在本地将对此域名的请求重定向到您的计算机。在任何操作系统上,最简单的现成方法是更改​​“主机”文件以将域映射到127.0.0.1(请参阅http://technet.microsoft.com/zh-cn/library/bb727005.aspx#EDAAhttps:/ /serverfault.com/questions/118290/cname-record-alias-in-windows-hosts-file)。

我通常使用Fiddler为我完成操作(在具有本地IIS的Windows上)-请参见以下示例 http://www.fiddler2.com/Fiddler/Dev/ScriptSamples.asp上的

if (oSession.HostnameIs("my.really.own.domain.com")) {
   oSession.host="localhost:80";
}

方法的主机文件方法不适用于Visual Studio Development Server,因为它要求传入的Urls为localhost / 127.0.0.1。如果您需要使用它(或可能使用IIS Express)来覆盖主机- 在IIS7 Express中使用Fiddler


9

Facebook不再允许FBML Facebook应用程序使用“本地主机”回调URL


确保在您的Facebook安全设置中禁用了“安全浏览”。如果启用了本地主机,它将使其不可用。
supajb 2012年

9

有了新的开发中心,现在变得更加容易:

1)将应用程序域留空。
2)单击添加平台
。3)站点URL应该等于本地主机的完整路径。
4)保存更改


1
验证这是进行本地主机安装的最佳方法。只需在上面的开发环境中插入基本URL,而无需使用http://,facebook会为您附加它。简单的东西!感谢Jay
keade

1
该解决方案在本地主机上运行时解决了我的问题
Rola

8

我刚刚发现了一种解决方法:您可以使用http://localtunnel.com使本地计算机可访问。您需要(临时)更改您的应用程序代码/ html中使用的某些URL,以便链接指向临时域,但至少Facebook可以访问您的计算机。


7

在应用程序的基本设置(https://developers.facebook.com/apps)中的设置->基本->选择您的应用程序如何与Facebook集成...

使用“站点URL:”和“移动站点URL:”分别保存您的生产和开发URL。两个站点都将被允许进行身份验证。我只是使用Facebook进行身份验证,因此不需要任何移动网站重定向功能。我通常在测试身份验证时将“移动站点URL:”更改为我的“ localhost:12345”站点,然后在完成后将其设置回正常。


5

有 !创建您的应用程序时,我的解决方案有效,但是您想在网站上使用Facebook身份验证。当您要创建集成到FB页面的应用时,不需要以下解决方案。

问题是您不能在应用程序的Facebook配置页面中将“ localhost”作为域。安全原因?

您需要转到OSX / Linux etc / hosts中的主机文件,并添加以下行:127.0.0.1 dev.yourdomain.com

您想要放置的域。一个错误是添加以下行:localhost dev.yourdomain.com(至少在osx雪豹中不起作用)。

然后,您必须清除dns缓存。在OSX上:输入dscacheutil -flushcache在终端中。最后,返回在线Facebook开发人员网站,然后在应用程序的配置页面中添加域“ dev.yourdomain.com”。

如果您使用Mamp,Easyphp等程序,请确保Apache的端口为80。

此解决方案应适用于Windows,因为它也有一个hosts文件。不过,据我所知,Windows 7不再使用此文件,但是,如果您找到一种强制Windows使用主机文件的方法,则此技巧应起作用。


适用于win8.1 c:\ windows \ system32 \ drivers \ etc \ hosts。您可能需要在Chrome网址= chrome:// net-internals /#dns中刷新“主机解析器缓存”
-rnrneverdies

5

您必须选择Facebook产品“ facebook login”,然后启用“客户端OAuth登录”,“ Web OAuth登录”和“嵌入式浏览器OAuth登录”,即使您提供了localhost网址,它也能正常工作 在此处输入图片说明


这有助于解决问题。截至2018年2月23日来自FB的消息:3月,我们将对您的应用设置进行安全更新,该更新将使来自下面未在有效OAuth重定向URI字段中列出的URI的调用无效。此更新是针对恶意活动的响应我们在平台上看到过,我们希望通过对重定向URI要求采用新的严格模式来保护您的应用或网站。
蒂姆·泰勒

1
Fb现在需要使用https进行回调。Localhost不支持https。
huuthang

1
@huuthang,因此不赞成使用整个Q / A。
RGB

3

我认为您应该能够使用Visual Studio开发Web服务器来开发应用程序:在http://www.facebook.com/developers/上启动新的FaceBook应用程序。然后将网站网址和画布url的设置设置为网站的运行实例,例如:http:// localhost:1062 /

这里有一些链接可以帮助您开始使用FaceBook:

  1. http://thinkdiff.net/facebook/graph-api-iframe-base-facebook-application-development/
  2. http://nagbaba.blogspot.com/2010/05/experiencing-facebook-javascript-sdk.html
  3. http://apps.facebook.com/thinkdiffdemo/

希望这可以帮助。


3

试试这个 - -

https://www.facebook.com/help/community/question/?id=589302607826562

1-单击“应用程序”,然后选择您的应用程序。

2-单击屏幕左侧的“设置”按钮。

3-在基本设置中,单击设置配置下方的添加平台按钮。

4-在平台对话框中选择“网站”。

5-输入您的URL(本地主机在这里工作)。

6-在“应用程序域”文本输入中,添加与URL中的域匹配的域。

7-保存您的设置。



2

假设您已将应用程序注册为:

app.domain.com

您只需要通过添加来修改/ etc / hosts文件

127.0.0.1 dev01.app.domain.com

然后,修改您的apache配置

ServerName dev01.app.domain.com

并重新启动apache。

您需要将URL放入变量中,以便在某些调用中将其用作XML参数:

<fb:login-button registration-url="http://<?=$URL?>/register" />

2

没有足够的信誉来评论最高投票的答案,但是至少在我的Rails环境(运行4)中,rails位于 http://localhost:3000,而不是 http://www.localhost:3000。当我将其更改为时http://localhost:3000,它工作正常。无需编辑任何主机文件。


2

app domain : localhost

site URL : http://localhost:4440/

使用新的UI为我工作。


0

我的解决方案在localhost上运行良好。....对于站点URL使用http://localhost/ 和对于App域使用localhost/folder_name Rest,一切都相同........它运行良好(尽管在App Domain..App中显示redflag正常)



0

该应用程序将在localhost:3000上正常运行,您只需指定应用程序处于生产模式时将在其上运行的https地址。
选项2是提供url或您的heroku网站,可让您在生产模式下使用示例应用程序。

在此处输入图片说明


0

最新更新:如果要在开发中进行测试,则无需提供任何url。您可以将字段留空。确保您的应用处于开发模式。如果没有,则关闭状态。

无需提供网站网址,应用程序域或有效的重定向oauth uri。

在此处输入图片说明


1
请注意,如果将您的应用程序从“实时”转换为“开发”,则可以从开发计算机上的localhost登录,但是所有在线用户都将无法登录。
webdevbyjoss

我这样做了,它仍然给我错误,并且fb按钮不会出现
joslinm

创建应用程序后,单击“创建测试应用程序”按钮以​​获取仅用于开发/测试的应用程序。我仍然需要在应用程序域中添加“ localhost”。

@ J.Money我想现在可能会改变。谢谢你让我知道。
Vigneshwaran Sivalingam,
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.