我打算从我的本地主机连接到 Facebook 聊天。我需要从 Facebook 获取会话密钥。当我将站点 URL 指定为localhost:8080
或ip-address:8080
它不起作用时。
我阅读了有关设置两个具有 2 个不同 API 密钥的应用程序的信息,一个在 dev m/c 上运行,另一个在 localhost 上运行,但我不太明白。
谁能解释如何在 localhost 上运行 Facebook 应用程序?
我打算从我的本地主机连接到 Facebook 聊天。我需要从 Facebook 获取会话密钥。当我将站点 URL 指定为localhost:8080
或ip-address:8080
它不起作用时。
我阅读了有关设置两个具有 2 个不同 API 密钥的应用程序的信息,一个在 dev m/c 上运行,另一个在 localhost 上运行,但我不太明白。
谁能解释如何在 localhost 上运行 Facebook 应用程序?
前段时间我写了一篇关于这个 的教程。
最重要的一点是“站点 URL”:
文件夹结构类似于:
app_name
¦ index.php
¦
+---canvas
¦ ¦ index.php
¦ ¦
¦ +---css
¦ main.css
¦ reset.css
¦
+---src
facebook.php
fb_ca_chain_bundle.crt
编辑:
Kavya:即使没有 IP 或端口,FB 服务器如何识别我的本地主机?
我认为这与 Facebook 没有任何关系,我想因为 iframesrc
参数是从客户端加载的,所以它会将您的本地 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 文件的内容!
这就是为什么实时订阅和取消授权回调(仅提一下)不适用于 localhost URL!因为 Facebook 会 ping(发送 http 请求)到这些 URL,但显然 Facebook 服务器不会将这些 URL 转换为您的 URL!
如果您使用本地主机:
在 Facebook-->Settings-->Basic,在“App Domains”字段中输入“localhost”,然后点击“+Add Platform”选择“Web Site”,
它将创建两个字段“Mobile Site URL”和“Site URL”,在“Site URL”中再次写入“localhost”。
为我工作。
您还可以编辑“主机”文件并创建域的本地变体。
例子
如果您的真实 Facebook 应用程序地址是“example.com”,您可以在指向“localhost”的“hosts”文件中创建“localhost.example.com”(只能从您的电脑访问)域,并在此域下运行您的本地网站。您可以通过这种方式欺骗 Facebook。
在您的应用程序的基本设置 ( https://developers.facebook.com/apps ) 下的 Settings->Basic->选择您的应用程序如何与 Facebook 集成...
使用“站点 URL:”和“移动站点 URL:”来保存您的生产和开发 URL。两个站点都将被允许进行身份验证。我只是使用 Facebook 进行身份验证,所以我不需要任何移动站点重定向功能。我通常在测试身份验证时将“Mobile Site URL:”更改为“localhost:12345”站点,然后在完成后将其恢复正常。
2013 年 8 月。Facebook 不允许为应用程序设置带有端口的域,例如“localhost:3000”。
因此,您可以使用https://pagekite.net将您的隧道localhost:port
传送到正确的域。
Rails 开发人员可以免费使用http://progrium.com/localtunnel/。
所以我今天得到了这个工作。我的网址是http://localhost:8888
。我给 facebook 的域是 localhost。我认为它不起作用,因为我试图使用该FB.api
方法提取数据。我不断得到一个“未定义”的名称和一个没有来源的图像,所以绝对无法访问图表。
后来我意识到我的问题实际上是我只是传递了/me
to的第一个参数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
(如果你使用博森)
第 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 步:/etc/hosts
在 Mac 上编辑您的主机文件以包含
127.0.0.1 yoursite.dev
此文件将域定向到 localhost。Nginx 侦听 localhost 并在匹配规则时重定向。
第 5 步:以后每次使用开发环境时,都使用yoursite.dev
地址栏中的 ,而不是localhost:3000
让 Facebook 正确登录。
只需将您的画布 url 指定为http://localhost/app_path。
Forward 是帮助在本地开发 facebook 应用程序的好工具,它支持 SSL,因此证书不是问题。
https://forwardhq.com/in-use/facebook
免责声明:我是开发人员之一
您需要将您的应用程序设置为在 localhost 的 https 上运行
您可以按照本文中给出的步骤在 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 或 localhost
第四步——设置证书
sudo vim /etc/apache2/sites-available/default-ssl
查找以下行并使用您的设置进行编辑
服务器名称 localhost 或 example.com
SSLCertificateFile 上的 SSLEngine /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
第五步——激活新的虚拟主机
sudo a2ensite default-ssl
sudo service apache2 reload
一个恶作剧:
使用MAMPPRO并创建: 服务器名称:您网站的确切地址(例如:helloworld.com)到您磁盘上的站点
在 Facebook 上: 因此您也可以保留原始站点 URL(例如:helloworld.com)
现在您明白了,当您在地址栏上键入您的网站时,您就在本地!..当你想上网时,只需在 MAMP PRO 上停用服务器 ..
:)
在我的情况下,问题显示为 chrome 阻止了从 localhost:4200 到 facebook api 网站的 CORS 请求。使用以下设置运行 Chrome: "YOUR_PATH_TO_CHROME\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="c:/chrome 在开发过程中就像一个魅力。即使没有本地主机添加到 facebook 应用程序的设置。
上面的答案都不适合我。我在 FB API 2.5 上运行。我的问题是解决后导致成功的问题的组合
这可能并不理想,因为动态 IP 的变化可能会使用 DynDNS 或类似的东西来使 IP 更加“静态”,但它对我有用