我打算从我的localhost连接到Facebook聊天。我需要从Facebook获取会话密钥。当我将网站网址设为localhost:8080
或ip-address:8080
时,它无效。
我读到有关使用2个不同的API密钥设置两个应用程序,一个在dev m / c上运行,另一个在localhost上运行,但我不太明白。
任何人都可以解释如何在localhost上运行Facebook应用程序吗?
答案 0 :(得分:77)
我刚刚写了一篇tutorial。
最重要的一点是“网站网址”:
文件夹结构类似于:
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.net将localhost:port
隧道传输到正确的域名。
Rails开发人员可以免费使用http://progrium.com/localtunnel/。
答案 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
您需要执行以下步骤:
安装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上运行。我的问题是一旦解决就会导致成功的问题
动态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应用程序的设置中。