Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何制作Facebook';在我的本地主机上运行什么图形API?_Facebook_Facebook Graph Api_Localhost - Fatal编程技术网

我如何制作Facebook';在我的本地主机上运行什么图形API?

我如何制作Facebook';在我的本地主机上运行什么图形API?,facebook,facebook-graph-api,localhost,Facebook,Facebook Graph Api,Localhost,标题可能暗示了这一点,但我正在寻找一种让Facebooks graph API在本地主机上工作的方法。如果每次我想测试的时候都需要将项目同步到服务器上,这会很痛苦,因为graph只在联机时工作 有人对这个问题有什么建议吗?除非您计划构建一个假的Facebook Graph API端点,否则是的,您需要在线查询Graph API 至于运行localhost,您会发现您需要一个端点来将用户重定向到安装,否则Facebook将抛出一个错误。你应该可以使用IP地址,但域名会为你省去很多麻烦 当我在开发时

标题可能暗示了这一点,但我正在寻找一种让Facebooks graph API在本地主机上工作的方法。如果每次我想测试的时候都需要将项目同步到服务器上,这会很痛苦,因为graph只在联机时工作


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

除非您计划构建一个假的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;博士

  • 安装facebook应用程序
  • 使用local.yourdomain编辑/etc/hosts文件
  • 在local.yourdomain上使用浏览器
  • 按照本帖中描述的说明操作:

    我正在运行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”-当然,在我写完此评论时,这可能已经更改了。