在localhost上运行Facebook应用程序

时间:2011-02-27 11:56:12

标签: facebook localhost facebook-chat

我打算从我的localhost连接到Facebook聊天。我需要从Facebook获取会话密钥。当我将网站网址设为localhost:8080ip-address:8080时,它无效。

我读到有关使用2个不同的API密钥设置两个应用程序,一个在dev m / c上运行,另一个在localhost上运行,但我不太明白。

任何人都可以解释如何在localhost上运行Facebook应用程序吗?

13 个答案:

答案 0 :(得分:77)

我刚刚写了一篇tutorial

最重要的一点是“网站网址”:

  

网站网址 http://localhost/app_name/

文件夹结构类似于:

app_name
¦   index.php
¦
+---canvas
¦   ¦   index.php
¦   ¦
¦   +---css
¦           main.css
¦           reset.css
¦
+---src
        facebook.php
        fb_ca_chain_bundle.crt

修改
Kavya 即使没有IP或端口,FB服务器如何识别我的本地主机?

我认为这与Facebook无关,我,因为iframe src参数是从客户端加载的,它会像对待你一样对待你的本地网址把它直接放在你的浏览器上。

例如,您的在线服务器上有一个包含内容的文件(例如online.php):

<iframe src="http://localhost/test.php" width="100%" height="100%">
    <p>Not supported!</p>
</iframe>

在localhost根目录中,设置文件test.php

<?php echo "Hello from Localhost!"; ?>

现在访问http://your_domain.com/online.php,您将看到本地主机文件的内容!

这就是为什么实时订阅和取消授权回调(仅提及)不会使用localhost URL!因为Facebook会ping(发送http请求)到这些URL,但显然Facebook服务器不会将这些URL转换为你的URL!

答案 1 :(得分:29)

如果您使用localhost:

在Facebook中 - &gt;设置 - &gt;基本,    在字段“App Domains”中写“localhost”,    然后点击“+添加平台”选择“网站”,

它会创建两个字段“移动网站网址”和“网站网址”,    在“站点URL”中再次写入“localhost”。

适合我。

答案 2 :(得分:23)

您还可以编辑“主机”文件并创建域的本地变体。

示例

如果您的真实Facebook应用程序地址是“example.com”,您可以在指向“localhost”的“hosts”文件中创建“localhost.example.com”(只能从您的电脑访问)域,并在下面运行您的本地网站这个域名。 你可以这样欺骗Facebook。

答案 3 :(得分:7)

在您应用的基本设置中{https://developers.facebook.com/apps) 在设置 - >基本 - &gt;下选择您的应用与Facebook集成的方式......

使用“网站网址:”和“移动网站网址:”来保存您的生产和开发网址。两个站点都将被允许进行身份验证。我只是使用Facebook进行身份验证,因此我不需要任何移动站点重定向功能。我通常在测试身份验证时将“移动站点URL:”更改为“localhost:12345”站点,然后在完成后将其设置恢复正​​常。

答案 4 :(得分:6)

2013年8月。 Facebook不允许为应用程序的端口设置域,例如“localhost:3000”。

因此,您可以使用https://pagekite.netlocalhost:port隧道传输到正确的域名。

Rails开发人员可以免费使用http://progrium.com/localtunnel/

  • Facebook当时只允许一个域用于App。如果您尝试添加另一个,作为localhost,它将显示有关域的某种不同错误。请确保当时只使用一个域进行回调和应用域设置。

答案 5 :(得分:4)

所以我今天开始工作了。我的网址是http://localhost:8888。我给facebook的域名是localhost。我认为它无效,因为我试图使用FB.api方法提取数据。我一直在获取一个“未定义”的名称和一个没有源的图像,因此绝对无法访问图表。

后来我意识到我的问题确实是我只是将/me的第一个参数传递给FB.api,而我没有令牌。因此,您需要使用FB.getLoginStatus函数来获取令牌,该令牌应添加到/me参数中。

答案 6 :(得分:2)

只需将您的画布网址指定为http://localhost/app_path

答案 7 :(得分:2)

好的,我不确定这些答案是什么,但我会告诉你,正如我工作的资深开发人员所建议的那样,对我有用的是什么。我在Ruby on Rails工作,并使用Facebook的JavaScript代码来获取访问令。

问题:要进行身份验证,Facebook会从您的地址栏中获取网址,并将其与文件中的网址进行比较。他们不允许您出于任何原因使用localhost:3000。但是,您可以通过运行本地服务器并将yoursite.dev指向yoursite.dev或指向localhost所指向的任何位置来使用完全组成的域名127.0.0.1:3000

第1步:安装或更新Nginx

$ brew install nginx(安装)或$ brew upgrade nginx(更新)

第2步:打开您的nginx配置文件

/usr/local/etc/nginx/nginx.conf(通常在这里)

/opt/boxen/config/nginx/nginx.conf(如果您使用Boxen)

第3步将此位代码添加到http {}

proxy_pass替换为您要将yoursite.dev指向的位置。在我的情况下,它正在替换localhost:3000或等效的127.0.0.1:3000

server {
  listen       yoursite.dev:80;
  server_name  yoursite.dev;
  location / {
    proxy_pass http://127.0.0.1:3000;
  }
}

第4步:在Mac上的/etc/hosts中修改您的主机文件以包含

127.0.0.1   yoursite.dev

此文件将域定向到localhost。 Nginx侦听localhost并重定向,如果它符合规则。

第5步:每次使用您的开发环境时,都会使用地址栏中的yoursite.dev而不是localhost:3000,以便Facebook正确登录。< / p>

答案 8 :(得分:1)

Forward是一个帮助本地开发facebook应用程序的好工具,它支持SSL,因此证书不是问题。

https://forwardhq.com/in-use/facebook

免责声明:我是开发者之一

答案 9 :(得分:0)

您需要将应用设置为通过https for localhost

运行

您可以按照此处给出的步骤在ubuntu上设置HTTPS

https://www.digitalocean.com/community/articles/how-to-create-a-ssl-certificate-on-apache-for-ubuntu-12-04

您需要执行以下步骤:

安装apache(如果没有)

sudo apt-get install apache2

第一步 - 激活SSL模块

sudo a2enmod ssl
sudo service apache2 restart

第二步 - 创建新目录

sudo mkdir /etc/apache2/ssl

第三步 - 创建自签名SSL证书

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache/ssl/apache.key -out /etc/apache2/ssl/apache.crt

使用此命令,我们将创建自签名SSL证书和保护它的服务器密钥,并将它们放入新目录中。 最重要的一行是“通用名称”。在此处输入您的官方域名,如果您还没有,请输入您网站的IP地址。

  

通用名称(例如服务器FQDN或您的名称)[]: example.com或   本地主机

第四步 - 设置证书

sudo vim /etc/apache2/sites-available/default-ssl

查找以下行并使用您的设置编辑

  

ServerName localhost或example.com

     

SSLCertificateFile上的SSLEngine /etc/apache2/ssl/apache.crt

     

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

第五步 - 激活新虚拟主机

sudo a2ensite default-ssl
sudo service apache2 reload

答案 10 :(得分:0)

一招:

使用 MAMPPRO 并创建: 服务器名称:您网站的精确地址(例如:helloworld.com) 到您磁盘上的网站

在Facebook上: 因此,您也可以保留原始网站网址(例如:helloworld.com)

现在您了解当您在地址栏上输入网站时,您处于本地! ..当你想要上网时,只需在MAMP PRO上停用服务器..

:)

答案 11 :(得分:0)

上述答案都不适合我。我在FB API 2.5上运行。我的问题是一旦解决就会导致成功的问题

  1. 创建一个测试应用,以确保维护和管理它 这样,可以在上线时禁用
  2. 正确阅读错误消息:) - 我必须使用“客户端OAuth登录”启用“Web OAuth登录”
  3. 使用https://www.whatismyip.com/查找我的内容 当前的IP是
  4. 在我的域上创建A记录,即 http://localhost.mydomain.com指向我当前的IP
  5. 动态IP的变化可能并不理想,人们可能会使用DynDNS或类似的东西来使IP更“静态”但它对我有用

答案 12 :(得分:0)

在我的情况下,问题显示是Chrome阻止了从localhost:4200到Facebook api网站的CORS请求。 使用以下设置运行Chrome:“ YOUR_PATH_TO_CHROME \ Google \ Chrome \ Application \ chrome.exe” --disable-web-security --user-data-dir =“ c:/ chrome 在开发时像魅力一样工作。即使没有将localhost添加到facebook应用程序的设置中。