本地主机中的 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 应用程序的帖子中链接到本地主机上的图像时遇到问题