本地主机中的 Facebook 开发

Posted

技术标签:

【中文标题】本地主机中的 Facebook 开发【英文标题】:Facebook development in localhost 【发布时间】:2011-05-30 18:48:05 【问题描述】:

只是想知道是否有任何方法可以在 localhost 中开发 Facebook 应用程序。

【问题讨论】:

【参考方案1】:

编辑:2012 年 2 月 15 日这是对 localhost 网站使用 FB 身份验证的方法。

我发现设置第二个 Facebook 应用程序更具可扩展性和方便性。如果我正在构建 MyApp,那么我将创建第二个名为 MyApp-dev。

在https://developers.facebook.com/apps 创建一个新应用程序 (2012 年 2 月 15 日新) 点击“选择您的应用程序如何与 Facebook 集成”下的 Website 复选框 (在最近的 Facebook 版本中,您可以在设置 > 基本 > 添加平台 - 然后选择网站下找到它) 将Site 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' 结尾 结尾

我更喜欢这种方法,因为一旦设置好,同事和其他机器就不需要额外设置了。

【讨论】:

+1ed 这很奇怪!人们说您不能将 localhost 添加为您的应用程序 url。但它只是对我有用。谢谢! 你现在还是这样吗?我似乎无法为 Facebook 添加 localhost、127.0.0.1:5000 或类似于我的应用程序域的任何内容。 我刚刚尝试创建一个新的并遇到了“无效域”问题。谢谢你的收获 @zoltarSpeaks 查看我的更新答案。您必须使用不同的字段,而不是“应用程序域” 这会覆盖初始化程序/devise.rb 的 config.omniauth :facebook, 'APP_KEY', 'APP_SECRET', :scope => "email,offline_access.." 吗?【参考方案2】:

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

更新

Facebook 现在稍微改变一下,只需转到应用设置,在网站 url 中添加 http: //localhost 并将应用域留空

【讨论】:

这完全有效。我们这边不需要任何东西。 这不再起作用,您会收到错误无法添加***域【参考方案3】:

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

应用域

   http://localhost

网站网址

   http://localhost:8082/

【讨论】:

必须填写这两个文本输入才能使 localhost 工作【参考方案4】:

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

如果您需要在 Facebook 注册的真实域名(如 my.really.own.domain.com),您可以在本地将请求重定向到该域到您的计算机。在任何操作系统上最简单的开箱即用方法是更改​​“主机”文件以将域映射到 127.0.0.1(请参阅 http://technet.microsoft.com/en-us/library/bb727005.aspx#EDAA 和 https://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";

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

【讨论】:

【参考方案5】:

Facebook 不再允许 FBML Facebook 应用程序使用“localhost”回调 URL

【讨论】:

确保在您的 Facebook 安全设置中禁用“安全浏览”。如果启用,这将使您的本地主机不可用。【参考方案6】:

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

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

【讨论】:

已验证这是进行 localhost 安装的最佳方式。只需在您的开发环境中插入基本 URL,如上 - 没有 http://,facebook 会为您附加它。简单的东西!谢谢杰 该解决方案解决了我在本地主机上运行时遇到的问题【参考方案7】:

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

【讨论】:

【参考方案8】:

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

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

【讨论】:

【参考方案9】:

您必须选择 Facebook 产品 'facebook login' 并启用 客户端 OAuth 登录、“Web OAuth 登录”和“嵌入式浏览器 OAuth 登录” 那么即使你给 localhost url 它也会工作

【讨论】:

这有助于解决问题。截至 2018 年 2 月 23 日来自 FB 的消息:3 月,我们正在对您的应用设置进行安全更新,这将使来自下面“有效 OAuth 重定向 URI”字段中未列出的 URI 的调用无效。此更新是为了响应恶意活动我们在我们的平台上看到了,我们希望通过要求重定向 URI 的新严格模式来保护您的应用或网站。 Fb 现在需要 https 进行回调。本地主机不支持 https。 @huuthang 所以整个问答都被弃用了。【参考方案10】:

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

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

您需要转到 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 URL = chrome://net-internals/#dns 中刷新“主机解析器缓存” 【参考方案11】:

这在 2018 年 6 月有效,即使在 HTTPS 要求之后也是如此。看来测试应用不需要 https:

创建一个测试应用: https://developers.facebook.com/docs/apps/test-apps/

然后在测试应用中,按照此视频中的简单步骤操作: https://www.youtube.com/watch?v=7DuRvf7Jtkg

【讨论】:

【参考方案12】:

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

这里有几个链接可以帮助你开始使用 FaceBook:

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

希望这会有所帮助。

【讨论】:

【参考方案13】:

试试这个 ---

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

1 - 点击应用,然后选择您的应用。

2 - 点击屏幕左侧的设置按钮。

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

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

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

6 - 在 App Domains 文本输入中,添加与 URL 中匹配的域。

7 - 保存您的设置。

【讨论】:

【参考方案14】:

假设您已将您的应用注册为:

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" />

【讨论】:

【参考方案15】:

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

【讨论】:

【参考方案16】:

app domain : localhost

site URL : http://localhost:4440/

使用新 UI 为我工作。

【讨论】:

【参考方案17】:

我的解决方案在 localhost 中运行良好..... 对于站点 URL,请使用 http://localhost/ 对于应用程序域使用localhost/folder_name 休息一切都是一样的......它工作正常 (尽管它在 App Domain 中显示红旗..App 运行良好)

【讨论】:

【参考方案18】:

在 facebook 登录选项卡点击设置下很容易转到应用程序仪表板 然后选择 Enforce HTTPS No, save settings

【讨论】:

【参考方案19】:

应用程序将在 localhost:3000 中正常运行,您只需指定应用程序在生产模式下将运行的 https 地址。 选项 2 是提供 url 或您的 heroku 网站,让您在生产模式下拥有示例应用程序。

【讨论】:

【参考方案20】:

最新更新: 如果您在开发中对其进行测试,则不必提供任何 url。您可以将这些字段留空。确保您的应用处于开发模式。如果没有从直播中关闭状态。

无需提供站点 url、应用程序域或有效的重定向 oauth uri。

【讨论】:

请注意,如果您将应用程序从“实时”转换为“开发”,您将能够从开发机器上的 localhost 登录,但您的所有实时用户将无法再登录。跨度> 我这样做了,但它仍然给我错误,并且 fb 按钮不会显示 创建应用程序后,单击“创建测试应用程序”按钮以​​获取仅用于开发/测试的应用程序。我仍然需要将“localhost”添加到应用程序域。 @J.Money 我认为它现在可能会改变。谢谢你告诉我。

以上是关于本地主机中的 Facebook 开发的主要内容,如果未能解决你的问题,请参考以下文章

Facebook 应用程序 - 本地主机和强制 https 问题

将 Facebook Authentication 集成到 FacebookApp 中的 Spring Security

Facebook SDK 错误 Domain=com.facebook.sdk Code=5 在 ios 中获取好友列表时

在 Facebook 应用程序的帖子中链接到本地​​主机上的图像时遇到问题

Facebook SDK 4.0 AppInvite 没有收到任何通知

在灯中设置虚拟主机