【问题标题】:How to Test Facebook Connect Locally如何在本地测试 Facebook 连接
【发布时间】:2011-01-28 10:03:41
【问题描述】:

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

【问题讨论】:

  • 答案在这里:forum.developers.facebook.com/viewtopic.php?pid=116136 你必须编辑 'C:\WINDOWS\system32\drivers\etc\hosts' 文件以使您的域来到您的本地主机
  • 这个系统在 Facebook 方面的实施似乎相当糟糕。他们似乎没有想到任何人都想在实时服务器上测试该功能。这里给出的两个解决方案——编辑本地主机文件以欺骗生产服务器并将其重定向到本地主机,以及临时将 Facebook 上的实时生产 URL 更改为本地主机,这在 Facebook 方面都是非常糟糕的设计。 Facebook 需要为其系统添加某种测试能力。
  • 一个变通办法是拥有 3 个应用程序 --> 实时、QA 和开发。因此,如果您的主要应用是 apps.facebook.com/ohnice/ QA 和 dev 可以是 apps.facebook.com/ohnice_qa_sd/ 是 apps.facebook.com/ohnice_dev_fg/ 是的一些随机的所以你没有不受欢迎的访客当你的房子不整洁。
  • @PaulLegato 现在完成了(多年后......)。查看我的解决方案或使用测试功能的解决方案之一。

标签: facebook


【解决方案1】:

当你发现它就很简单了。

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

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

127.0.0.1    local.foo.com

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

【讨论】:

  • 要在 MAC 上编辑主机文件,然后在终端中运行“sudo pico /private/etc/hosts”,编辑并按“ctrl X”保存
  • @Christoffer:我相信 /private/etc 只是到 /etc 的符号链接,所以 /etc/hosts 和 /private/etc/hosts 是同一个文件。
  • 你是对的......但我们中的一些人需要用勺子喂食并说“打开 /etc/hosts”是不够的 ;) FB 对我来说仍然无法在本地使用这个解决方案尽管。我没有使用 facebook JS
  • 这曾经为我工作直到最近,但现在我在尝试登录时收到connection refused 异常,可能是由于 facebook 方面的更改。非常感谢任何解决方法的想法。
  • 如果您这样做是为了访问本地运行的 Rails 应用程序,您可能必须在浏览器中访问 local.foo.com:3000`,因为 Rails 应用程序通常在该端口上运行。跨度>
【解决方案2】:

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

完成后 - 改回来。

【讨论】:

  • Facebook 不会“连接”回您的服务器。他们的JS可以。 JS 在浏览器的上下文中运行。谁知道“localhost”指向哪里。
  • 它不允许我添加“localsite”,我必须确保其中有一个点。这有效:“local.site
  • 某些 FB 功能不适用于此功能。例如 - 将成就保存到 FB 服务器。它需要 HTTPS,所以我的本地主机技巧不起作用:(
  • 值得注意的是,应用表单上的验证要求您在 url 中使用 localhost,例如 http://localhost/myapp 而不是 http://myapp
  • 如果您使用其他端口,请使用此模式:localhost:xxxx),例如:localhost:8080
【解决方案3】:

Facebook 增加了测试版本功能。

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

然后,将网站下的Site URL更改为“http://localhost”,然后按Save Changes

仅此而已,但请注意:App IDApp Secret 密钥对于应用程序及其测试版本是不同的!

【讨论】:

  • 设置面板中的应用域是什么。我正在开发带有 facebook 登录的 ionic 应用程序
  • @Chiragthaker 这是将托管生产应用程序的域
  • 在我的情况下,这比编辑 hosts 文件要好得多,因为它不需要在我的测试服务器上使用 HTTPS。
  • 据我所知,这似乎现在需要 HTTPS...
  • 我试过这个解决方案,它似乎可以工作,但我仍然有这个错误消息:The method FB.login can no longer be called from http pages.
【解决方案4】:

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

编辑 - 在最新的 fb 版本中,您可以在 settings 标签下找到它。

【讨论】:

  • 或者只使用单独的配置文件,dev、staging 和 live。
  • 找不到“使用 Facebook 登录的网站”了。
  • 看来你必须点击“+添加平台”灰色大水平按钮。那里有“网站”
【解决方案5】:

你不必做任何困难的事情!

Facebook → 设置 → 基本:
"App 中写入 "localhost" 域” 字段,然后点击+添加平台选择网站

之后,在 "Site Url" 字段中写下您的 localhost url
(例如:http://localhost:1337/something)。

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

【讨论】:

  • 路径 file:///android_assets/www 中的文件是否有解决方法? facebook 将不允许站点 url 的路径
  • 现在必须是 https
  • @Simon_Weaver 你从哪里得到这些信息的?它记录在某处吗?
  • @Simon_Weaver 来自您发送的那个链接:“您仍然可以使用带有“localhost”地址的 HTTP,但前提是您的应用仍处于开发模式。”
【解决方案6】:

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

【讨论】:

  • 另一个隧道选择是 ngrok.com
【解决方案7】:

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

【讨论】:

    【解决方案8】:

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

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

    【讨论】:

    • 如果来自不同位置的多个开发人员在网站上工作怎么办?我们使用 VM(Vagrant),因此每个开发人员的 IP 都是相同的。遗憾的是,facebook 不允许在白名单中使用本地 IP。它不起作用。
    • 如果我正确地阅读了您的评论,这应该不是问题。您需要输入您的公共 IP,您说每个开发人员都相同(您的意思是不一样)。如果您有多个开发人员在不同的站点使用不同的 IP,您可以使用 VPN 通过 1 个 IP 路由所有流量。
    • 不,不同位置的不同机器的公网IP当然不一样,只是每台机器的本地IP都一样。 (例如本地主机)。我不想路由任何东西。现在我在 FB 应用程序中使用 localhost(只是一个例子) - 效果很好。但是一旦页面上线,我需要一个解决方案。 Facebook 允许在应用程序中创建“测试应用程序”,这可能是解决方案,但我还没有尝试过。编辑:似乎这是解决方案
    【解决方案9】:

    转到画布页面.. 在浏览器中查看..复制地址栏文本。 现在去你的脸书应用 去编辑设置

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

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

    无论您需要画布 url 还是重定向 url,都可以使用相同的代码..

    希望它会有所帮助..

    【讨论】:

      【解决方案10】:

      上次测试 2021/06/07

      用我的成功经验来补充the excellent answer of @Erdal_G

      • 显然,即使在本地环境中也需要HTTPS(我使用了库https-localhost)。

      • [我不知道这是否是强制性的]从主应用程序创建一个测试应用程序(https://developers.facebook.com/docs/development/build-and-test/test-apps/

      • 将重定向 OAuth URI 设置为 https://localhost:<MY_PORT>/auth/ 并相应地更新 .../instagram-basic-display/basic-display/ 设置中的所有其他 URI。

      • 最后别忘了在请求中使用测试应用的client-id(又名app-id)和app-secret,它们与父应用不同

      【讨论】:

        【解决方案11】:

        创建 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
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-05-18
          • 1970-01-01
          • 2013-05-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-18
          相关资源
          最近更新 更多