我如何制作Facebook';在我的本地主机上运行什么图形API?
标题可能暗示了这一点,但我正在寻找一种让Facebooks graph API在本地主机上工作的方法。如果每次我想测试的时候都需要将项目同步到服务器上,这会很痛苦,因为graph只在联机时工作我如何制作Facebook';在我的本地主机上运行什么图形API?,facebook,facebook-graph-api,localhost,Facebook,Facebook Graph Api,Localhost,标题可能暗示了这一点,但我正在寻找一种让Facebooks graph API在本地主机上工作的方法。如果每次我想测试的时候都需要将项目同步到服务器上,这会很痛苦,因为graph只在联机时工作 有人对这个问题有什么建议吗?除非您计划构建一个假的Facebook Graph API端点,否则是的,您需要在线查询Graph API 至于运行localhost,您会发现您需要一个端点来将用户重定向到安装,否则Facebook将抛出一个错误。你应该可以使用IP地址,但域名会为你省去很多麻烦 当我在开发时
有人对这个问题有什么建议吗?除非您计划构建一个假的Facebook Graph API端点,否则是的,您需要在线查询Graph API 至于运行localhost,您会发现您需要一个端点来将用户重定向到安装,否则Facebook将抛出一个错误。你应该可以使用IP地址,但域名会为你省去很多麻烦 当我在开发时,我使用一个指向我的测试服务器的测试Facebook应用程序,当我实时推送我的代码时,它使用基于真实域的真实应用程序。此外,我的测试服务器是一个VM,它通过Samba共享访问我计算机上的文件
希望这有帮助。奇怪,但是您是否尝试过修改您的本地DNS覆盖(无论是
/etc/hosts
还是\WINDOWS\system32\drivers\etc\hosts
)以将您提供给Facebook应用程序的域指向localhost?那可能行得通
我打赌他们使用了某种引用URL检查,如果他们这样做了,你可以在浏览器中访问该URL,它将路由到localhost,它将使用正确的引用程序访问graph api,你应该是金黄色的
让我知道它是否有效。如果您不需要离线访问(这是不可用的,请参阅Jimmy Sawczuk的回答),但只需要您的网站能够从本地主机而不是真实的域名访问Graph API,那么这应该是可能的 你需要做的是在Facebook上编辑网站应用程序的设置。将您的应用程序URL设置为“localhost”或您的计算机本地IP地址,我认为它应该可以工作。tl;博士
我正在运行rails 3.2.8,这对我也很有用。然而,在一个有mountain lion的mac上,我发现最简单的方法是在etc/hosts文件中为“somedomain.com:3000”在localhost下为站点url创建一个别名,而不在应用程序域上创建端口 好的。我只是花了一天大部分时间来解决这个问题。如果您没有访问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);
我将这两个文件移动到当前的节点目录中,从中运行服务器实例
我创建的服务器实例如下所示:
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>
FB.init({
appId:“将应用程序密钥放在此处”,
版本:“v2.0”,
状态:正确
});
功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id)){return;}
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/sdk.js”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”
"facebook jssdk"),;
启动节点服务器
浏览到
你应该看看你的网站。现在,它应该能够伪造你的facebook api,让你认为你正在为其创建应用的常规服务器上运行
不必一直部署就可以进行facebook开发。不确定你的意思:你是说在localhost上的HTTP服务器上实现一个模拟的facebook graph API,还是运行你的web应用程序,然后在线访问facebook graph API?我在自己的计算机上工作,我让Xampp运行我的localhost。我想通过graph api访问facebook,而不必将项目上载到Web服务器。可能的重复项您确定没有任何方法可以从本地主机以任何方式配置xampp或mamp吗?(实际上这不是为我,而是为其他人,他说现在上传到Web服务器不是一个选项。他基本上只是想从用户那里获得名称和个人资料图片,他希望他的网站在本地运行)。顺便说一句:我知道在asp.net中有一种方法可以做到这一点,我只是不知道php是否也可以。这是asp.net的链接:也许我误解了你,但是你发布的404'ed链接。我在我的答案上做了一些扩展,以说明我是如何配置我的开发环境的。希望能有帮助。嗯,问题现在解决了。如果您将应用程序中developers.facebook.com网站上的网站url设置为本地主机,则效果很好。不管怎样,谢谢你的评论。刚刚意识到:你指向的url和我说的一模一样。好吧,问题现在解决了。如果您将应用程序中developers.facebook.com网站上的网站url设置为本地主机,则效果很好。无论如何,谢谢你的评论。万一有人遇到这个问题:我正试图让它从我的本地主机mydomain:8887上的一个域工作,当我尝试输入它时,facebook说它不是一个有效的URL,为了解决这个问题,我编辑了虚拟主机(在httpd.conf中)要将其更改为mydomain.com:8887,然后facebook接受了它请注意,您可能需要将您的网站URL和应用程序域更改为“localhost”-当然,在我写完此评论时,这可能已经更改了。