2011-05-02 27 views
11

标题可能暗示它,但我正在寻找一种方法让Facebooks图形API在我的本地主机上工作。每次我想测试时,如果我需要将项目同步到服务器,这是一种痛苦,因为图表只在联机时才起作用。如何让Facebook的图形API在我的本地主机上工作?

有没有人对这个问题有任何建议?

+0

不确定你的意思:你的意思是实现一个模拟的Facebook图形API或在本地主机上的HTTP服务器上运行你的Web应用程序并在线访问Facebook Graph API? – Femi 2011-05-02 14:44:09

+0

我在我自己的电脑上工作,我有Xampp运行我的本地主机。我想通过图表API访问Facebook,而无需将项目上传到网络服务器。 – 2011-05-02 14:46:19

+0

[在本地主机上运行Facebook应用程序]的可能的重复(http://stackoverflow.com/questions/5133075/running-facebook-application-on-localhost) – ifaour 2011-05-02 17:17:14

回答

15

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

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

+0

这工作完美,非常感谢! – 2011-05-02 15:03:19

+3

incase任何人遇到这个问题:我试图让它从我的本地主机mydomain:8887上的域中工作,当我尝试输入它作为URL Facebook说它不是一个有效的网址,解决这个我编辑虚拟主机(在httpd.conf中)将其更改为mydomain.com:8887,然后由Facebook接受它 – 2012-02-12 14:48:21

+1

请注意,您可能需要将您的站点URL - AND - 应用程序域更改为“localhost” - 当然可能有在我写完这篇评论的时候改变了。 – 2017-10-03 19:43:35

1

除非你打算建立一个假的Facebook Graph API端点,那么是的,你需要在线查询图形API。

至于流失本地主机,你会发现你需要一个端点来重定向用户在安装或Facebook会引发错误。你应该可以使用IP地址,但域名会为你节省很多麻烦。

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

希望这会有所帮助。

+0

您确定无法以任何方式配置xampp或mamp,我可以从本地主机进行测试吗? (这其实并不适合我,这是为了别人,他说上传到网络服务器目前不是一种选择,他基本上只想从用户那里获得名字和个人资料图片,并且他希望他的网站在本地运行)。 – 2011-05-02 14:49:14

+0

btw:我知道有一种方法可以在asp.net中做到这一点,我只是不知道它是否也可以用于php。 这是链接到asp.net的方式:http://facebooksdk.com/docs/2010/10/how-to-set-up-local-development-environment-for-facebook-application-使用asp-net/ – 2011-05-02 14:50:12

+0

也许我误解了你,但是你发布的404链接。 – 2011-05-02 14:52:24

0

奇怪,但你有没有尝试修改你的本地DNS覆盖(/etc/hosts\WINDOWS\system32\drivers\etc\hosts)以指向你在本地主机上提供给你的Facebook应用的域名?这可能会起作用。

我敢打赌,他们使用某种引用URL检查,如果他们这样做,你可以访问浏览器中的URL,它将路由到本地主机,它会打右图引用的API,你应该金色。

让我知道它是否有效。

+0

刚刚意识到:您指向的网址完全符合我所说的内容。 – Femi 2011-05-02 14:59:45

+0

好了,现在问题就解决了。如果您在您的应用程序的developers.facebook.com网站上将website-url设置为您的本地主机,则它工作得很好。无论如何感谢您的评论。 – 2011-05-02 15:02:01

0

我正在运行rails 3.2.8,这也适用于我。然而,在一个有狮子山的mac上,我找到的最简单的方法是在localhost下在站点url的etc/hosts文件中为'somedomain.com:3000'创建一个别名,并在应用程序域中为port#创建一个别名。

0

好的。我只是花了一天时间的一部分来解决这个问题。如果您无法访问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开发,而不必一直部署。

相关问题