在本地主机上运行Facebook应用程序

我打算从本地主机连接到Facebook聊天。 我将需要从Facebook获得会话密钥。 当我把网站URL作为localhost:8080ip-address:8080它不起作用。

我读了关于使用2个不同的API密钥设置两个应用程序,一个在dev m / c上运行,另一个在本地主机上运行,​​但我不太明白。

任何人都可以解释如何在本地运行Facebook应用程序?

我前一段时间写了一篇关于这个的教程 。

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

网站url: 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参数是从客户端加载的,它会把你的本地URL看作是直接放在你的浏览器上。

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

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

在你的本地主机根目录下,有文件test.php

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

现在访问http://your_domain.com/online.php你会看到你的localhost文件的内容!

这就是为什么实时订阅和取消授权callback(只是提及) 将不会与本地主机URL的工作! 因为Facebook会ping(发送http请求)到这些URL,但显然Facebook服务器不会将这些URL翻译成你的!

如果你使用localhost:

在Facebook的 – >设置 – >基本,在“应用程序域”字段中写入“本地主机”,然后点击“+添加平台”select“网站”

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

为我工作。

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

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

在您的应用程序的基本设置( https://developers.facebook.com/apps )下的设置 – >基本 – >select你的应用程序如何与Facebook集成…

使用“网站url”和“移动网站url”来保存您的制作和开发url。 这两个网站将被允许进行身份validation。 我只是使用Facebook进行身份validation,所以我不需要任何移动网站redirectfunction。 我在testing身份validation时,通常会将“移动网站url”更改为我的“localhost:12345”网站,然后在完成后将其设置恢复正​​常。

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

因此,您可以使用https://pagekite.net将您的;localhost:port隧道到适当的域。

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

  • Facebook只允许在一个域的应用程序。 如果你想添加另一个,作为本地主机,它会显示关于域的一些不同的错误。 请确保当时只使用一个域进行回叫和应用域设置。

所以我今天拿到了这个工作。 我的url是http://localhost:8888 。 我给Facebook的域名是localhost。 我以为这是行不通的,因为我试图使用FB.api方法拉取数据。 我一直得到一个“未定义”的名字和一个没有源代码的图像,所以绝对没有访问图。

后来我意识到我的问题实际上只是把/me的第一个参数传给FB.api ,而我没有一个标记。 所以你需要使用FB.getLoginStatus函数来获取一个token,它应该被添加到/me参数中。

只需指定您的canvasurl为http:// localhost / app_path 。

好吧,我不确定这些答案是怎么回事,但是我会按照我的工作中的高级开发人员的build议让你知道我的工作。 我正在Ruby on Rails中使用Facebook的JavaScript代码来获取访问令牌。

问题:为了进行身份validation,Facebook正在从您的地址栏中获取url,并将其与自己的文件进行比较。 他们不允许你出于任何原因使用localhost:3000 。 但是,您可以通过运行本地服务器并将yoursite.dev指向127.0.0.1:3000或本地主机指向的任何位置来使用完整的域名(如yoursite.dev

第1步 :安装或更新Nginx

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

第2步 :打开你的nginxconfiguration文件

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

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

第3步将这一点代码添加到您的http {}

proxy_passreplace为您要指向yoursite.dev任何位置。 在我的情况下,这是取代本地主机: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 

该文件将域指向本地主机。 Nginx在localhost上监听,如果符合规则则redirect。

第5步 :每次你使用你的开发环境前进,你使用地址栏yoursite.dev而不是localhost:3000所以Facebooklogin你正确的。

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

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

免责声明:我是开发人员之一

您需要将您的应用程序设置为通过本地主机的https运行

你可以按照这个步骤在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 

第二步 – 创build一个新的目录

 sudo mkdir /etc/apache2/ssl 

第三步 – 创build一个自签名的SSL证书

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

使用这个命令,我们将创build自签名的SSL证书和保护它的服务器密钥,并将它们放到新的目录中。 最重要的一行是“Common Name”。 在这里input你的官方域名,如果你还没有,你的网站的IP地址。

通用名称(例如服务器FQDN或您的名字)[]: example.com或localhost

第四步 – 设置证书

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

find以下行并用您的设置编辑这些行

ServerName localhost或example.com

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

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

第五步 – 激活新的虚拟主机

 sudo a2ensite default-ssl sudo service apache2 reload 

一个恶作剧:

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

在Facebook上:所以你可以保留你原来的网站URL(例如:helloworld.com)

现在你明白,当你在地址栏上input你的网站时,你是在本地 ! ..当你想要在线,只是无效的MAMP PRO服务器..

🙂

上面的答案都没有为我工作。 我在FB API 2.5上运行。 矿是一旦解决就导致成功的问题的组合

  1. 创build一个testing应用程序,以确保它被维护和pipe理,并可以在上线时被禁用
  2. 正确阅读错误消息:) – 我必须启用“networkingOAuthlogin”与“客户端OAuthlogin”
  3. 使用https://www.whatismyip.com/找出我目前的IP是什么;
  4. 在我的域名上创build一个logging,即指向我当前IP的http://localhost.mydomain.com

这可能不是理想的dynamicIP的变化,可能使用DynDNS或类似的东西,使IP更“静态”,但它为我工作