如何在我的localhost上使Facebook的图形API工作?

时间:2011-05-02 14:36:50

标签: facebook facebook-graph-api localhost

标题可能暗示它,但我正在寻找一种方法让Facebook图形API在我的localhost上运行。如果我每次要测试时都需要将项目同步到服务器,那将是一件痛苦的事情,因为图表仅在在线时才有效。

有没有人对此问题有任何建议?

6 个答案:

答案 0 :(得分:16)

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

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

答案 1 :(得分:4)

TL;博士

  1. 设置Facebook应用
  2. 使用local.yourdomain
  3. 编辑/ etc / hosts文件
  4. 在local.yourdomain上使用您的浏览器
  5. 按照本文中描述的说明操作: How To: Local Facebook App Development

答案 2 :(得分:1)

除非您打算构建虚假的Facebook Graph API端点,否则您需要联机查询图API。

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

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

希望这有帮助。

答案 3 :(得分:0)

奇怪,但您是否尝试修改本地DNS覆盖(/etc/hosts\WINDOWS\system32\drivers\etc\hosts)以指向您在localhost上提供给Facebook应用的域名?那可能有用。

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

让我知道它是否有效。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

行。我只花了一天的时间来完成这项工作。如果您无法访问API面板来编辑您的facebook api允许的域(并且您需要使用SSL来伪造它)。

这就是我的所作所为:

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

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

确保已安装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);

在您的主机文件中添加您需要伪造的内容。 e.g。

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,以为你正在为你的应用程序创建的常规服务器上运行。

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