我计划从本地主机连接到Facebook聊天。我需要从Facebook获取会话密钥。当我将网站URL设置为localhost:8080
或ip-address:8080
时,它无法工作。
我了解到可以设置两个具有不同API密钥的应用程序,一个在开发机器上运行,另一个在本地主机上运行,但我并没有完全明白。
请问有人能够解释如何在本地主机上运行Facebook应用程序吗?
我计划从本地主机连接到Facebook聊天。我需要从Facebook获取会话密钥。当我将网站URL设置为localhost:8080
或ip-address:8080
时,它无法工作。
我了解到可以设置两个具有不同API密钥的应用程序,一个在开发机器上运行,另一个在本地主机上运行,但我并没有完全明白。
请问有人能够解释如何在本地主机上运行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 URL的原因!因为Facebook会向这些URL发送HTTP请求,但明显Facebook服务器不会将这些URL转换为您的URL!
http://localhost:8080/auth/index.html
,并且出错的网页是http://localhost:8080/auth/index.html
,而channelurl行是:channelUrl : '//localhost:8080/auth/channel.html',
。 - necromancer如果你使用本地主机:
在Facebook-->设置-->基本信息页面, 在"应用域名"字段中写入"localhost", 然后点击"+添加平台"选择"网站",
它将创建两个字段 "移动站点URL" 和 "站点URL", 在"站点URL"中再次输入 "localhost"。
对我来说这样可以正常使用。
C:/Windows/System32/drivers/etc/hosts
,在Ubuntu上则是 /etc/hosts
。 - pztrick2013 年 8 月,Facebook 不允许为应用设置带有端口的域名,例如 "localhost:3000"。
因此,您可以使用 https://pagekite.net 将您的 localhost:port
隧道传输到正确的域名上。
Rails 开发人员可以免费使用 http://progrium.com/localtunnel/。
http://localhost:8888
。我给Facebook的域名是localhost。我以为它不起作用是因为我试图使用FB.api
方法来提取数据。我一直得到一个"undefined"名称和没有源的图片,所以肯定无法访问Graph。/me
的第一个参数给FB.api
,而且我没有令牌。所以你需要使用FB.getLoginStatus
函数获取一个令牌,这应该添加到/me
参数中。好的,我不确定这些答案是怎么回事,但我会告诉你在我的工作中,一位高级开发人员建议我采用的方法。我正在使用Ruby on Rails并使用Facebook的JavaScript代码来获取访问令牌。
问题:为了进行身份验证,Facebook将从您的地址栏中获取URL,并将其与其文件中的内容进行比较。出于某种原因,他们不允许您使用localhost:3000
。但是,您可以使用完全虚构的域名,例如yoursite.dev
,通过运行本地服务器并将yoursite.dev
指向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
yoursite.dev
而不是localhost:3000
,这样Facebook就可以正确登录。只需将您的画布URL指定为http://localhost/app_path。
Forward 是一个非常好的工具,可以帮助在本地开发 Facebook 应用程序,它支持 SSL,因此证书不是问题。
免责声明:我是开发人员之一。你需要设置你的应用程序在本地运行时使用https
你可以按照这个步骤在Ubuntu上设置HTTPS
你需要执行以下步骤: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 或 YOUR 名称)[]:example.com 或 localhost
第四步 - 设置证书
sudo vim /etc/apache2/sites-available/default-ssl
查找以下行并使用您的设置进行编辑
ServerName localhost或example.com
SSLEngine打开SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
第五步-激活新虚拟主机
sudo a2ensite default-ssl
sudo service apache2 reload