【问题标题】:How can I make Facebook's graph API work on my localhost?如何让 Facebook 的图形 API 在我的本地主机上工作?
【发布时间】:2011-08-17 00:57:15
【问题描述】:

标题可能暗示了这一点,但我正在寻找一种方法让 Facebook 的图形 API 在我的本地主机上工作。如果我每次要测试时都需要将项目同步到服务器,那会很痛苦,因为图表仅在在线时才有效。

有人对这个问题有什么建议吗?

【问题讨论】:

  • 不确定您的意思:您是指实现一个模拟 Facebook 图形 API 还是在本地主机上的 HTTP 服务器上运行您的 Web 应用程序并在线访问 Facebook 图形 API?
  • 我在自己的电脑上工作,我让 Xampp 运行我的本地主机。我想通过图形 api 访问 facebook,而无需将项目上传到网络服务器。

标签: facebook facebook-graph-api localhost


【解决方案1】:

如果您不需要离线访问(不可用,请参阅 Jimmy Sawczuk 的回答),但只需要您的网站能够从您的本地主机而不是真实域名访问 Graph API,应该可以.

您需要在 Facebook 上编辑您网站应用的设置。将您的应用程序 URL 设置为“localhost”或您的计算机本地 IP 地址,我认为它应该可以工作。

【讨论】:

  • 以防有人遇到这个问题:我试图让它从我的本地主机 mydomain:8887 上的域工作,当我尝试输入它作为 URL facebook 说它不是有效的url,为了解决这个问题,我编辑了虚拟主机(在 httpd.conf 中)将其更改为 mydomain.com:8887,然后 facebook 接受了它
  • 请注意,您可能需要将您的站点 URL - 并且 - 应用程序域更改为“本地主机” - 当然,在我写完这篇评论时,这可能已经改变了。
【解决方案2】:

tl;博士

  1. 设置 Facebook 应用程序
  2. 使用 local.yourdomain 编辑 /etc/hosts 文件
  3. 在 local.yourdomain 上使用您的浏览器

按照本文中描述的说明操作: How To: Local Facebook App Development

【讨论】:

    【解决方案3】:

    除非您计划构建一个虚假的 Facebook Graph API 端点,否则是的,您需要在线查询图形 API。

    至于运行 localhost,您会发现您需要一个端点来将用户重定向到安装,否则 Facebook 会抛出错误。您应该可以使用 IP 地址,但域名会为您省去很多麻烦。

    在开发时,我使用指向我的测试服务器的测试 Facebook 应用程序,当我实时推送我的代码时,它使用基于真实域的真实应用程序。此外,我的测试服务器是一个 VM,它通过 Samba 共享访问我计算机上的文件。

    希望这会有所帮助。

    【讨论】:

    • 你确定没有办法以我可以从本地主机测试的任何方式配置 xampp 或 mamp 吗? (这实际上不是给我的,它是给其他人的,他说此时上传到网络服务器不是一种选择。他基本上只是想从用户那里获取姓名和个人资料图片,他希望他的网站在本地运行)。
    • btw:我知道在 asp.net 中有一种方法可以做到这一点,我只是不知道 php 是否也可以。这是指向 asp.net 方式的链接:facebooksdk.com/docs/2010/10/…
    • 也许我误解了你,但你发布的链接是 404'ed。
    • 我稍微扩展了我的答案,以说明我是如何配置我的开发环境的。希望对您有所帮助。
    • 好了,现在问题解决了。如果您将应用程序中的 developers.facebook.com 网站上的网站 URL 设置为您的本地主机,它就可以正常工作。无论如何感谢您的评论。
    【解决方案4】:

    奇怪,但您是否尝试过修改本地 DNS 覆盖(/etc/hosts\WINDOWS\system32\drivers\etc\hosts)以将您提供给 Facebook 应用程序的域指向本地主机?那可能行得通。

    我打赌他们会使用某种引用 URL 检查,如果他们这样做,您可以在浏览器中访问该 URL,它将路由到 localhost,它会使用正确的引用访问图形 api,您应该是黄金.

    让我知道它是否有效。

    【讨论】:

    • 刚刚意识到:您指向的网址与我所说的完全一样。
    • 好了,现在问题解决了。如果您在您的应用程序中将 developers.facebook.com 网站上的网站 URL 设置为您的本地主机,它就可以正常工作。无论如何感谢您的评论。
    【解决方案5】:

    我正在运行 rails 3.2.8,这也适用于我。但是,在带有山狮的 Mac 上,我发现的最简单的方法是在站点 url 的 etc/hosts 文件中为“somedomain.com:3000”在 localhost 下创建一个别名,并且在应用程序域上没有端口号。

    【讨论】:

      【解决方案6】:

      好的。我刚刚花了一天中最好的时间来解决这个问题。如果您无权访问 API 面板来编辑您的 facebook api 允许的域(并且您需要使用 SSL 来伪造它)。

      这就是我所做的:

      我正在我的桌面上运行节点服务器。

      您需要确保您的节点服务器已经指向您想要在项目中运行/包含的任何文件。 (即如果您不使用节点进行开发,此解决方案可能对您没有帮助)。

      确保您已安装 express 和 vhost。我使用这样的命令行创建了服务器密钥和证书:

      openssl genrsa -out myKey.pem
      openssl req -new -key key.pem -out csr.pem
      openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out myCert.pem
      rm csr.pem
      

      我将这两个文件移到了运行服务器实例的当前节点目录中。

      我这样创建了服务器实例:

      var vhost = require('vhost'),
      express = require('express'),
      
      vhost: {
      
           'default': 'www.mybigfakeserver.com'   // this should match what your api key allows
      },
      
      require('https').createServer({
              key: fs.readFileSync('myKey.pem'),
              cert: fs.readFileSync('myCert.pem')
      }, app).listen(443);
      

      在您的主机文件中添加您需要伪造的任何内容。例如

      127.0.0.1 www.mybigfakeserver.com

      这是取自 facebook api。您需要将其添加到您的 HTML 文件中:

      <script>
      
           FB.init({
              appId      : 'PUT YOUR APP KEY HERE',
              version    : 'v2.0',
              status: true
           });
      function(d, s, id){
        var js, fjs = d.getElementsByTagName(s)[0];
            if (d.getElementById(id)) {return;}
            js = d.createElement(s); js.id = id;
            js.src = "//connect.facebook.net/en_US/sdk.js";
            fjs.parentNode.insertBefore(js, fjs);
       }(document, 'script'
      , 'facebook-jssdk'));
      
      </script>
      

      启动你的节点服务器。

      浏览到https://www.mybigfakeserver.com

      您应该会看到您的网站。它现在应该能够伪造您的 facebook api,让您认为您正在创建应用程序的常规服务器上运行。

      无需一直部署即可进行 facebook 开发。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-12-29
        • 2018-11-10
        • 2013-07-16
        • 1970-01-01
        • 2020-07-04
        • 1970-01-01
        相关资源
        最近更新 更多