在本地主机上运行Facebook应用程序
我打算从本地主机连接到Facebook聊天。 我将需要从Facebook获得会话密钥。 当我把网站URL作为localhost:8080
或ip-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_pass
replace为您要指向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
您需要执行以下步骤:
安装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上运行。 矿是一旦解决就导致成功的问题的组合
- 创build一个testing应用程序,以确保它被维护和pipe理,并可以在上线时被禁用
- 正确阅读错误消息:) – 我必须启用“networkingOAuthlogin”与“客户端OAuthlogin”
- 使用https://www.whatismyip.com/找出我目前的IP是什么;
- 在我的域名上创build一个logging,即指向我当前IP的http://localhost.mydomain.com
这可能不是理想的dynamicIP的变化,可能使用DynDNS或类似的东西,使IP更“静态”,但它为我工作