我打算从我的本地主机连接到Facebook聊天。我将需要从Facebook获取会话密钥。当我提供网站网址为localhost:8080
或ip-address:8080
不起作用时。
我读到有关使用两个不同的API密钥设置两个应用程序的信息,一个在dev m / c上运行,另一个在localhost上运行,但我不太了解。
谁能解释如何在本地主机上运行Facebook应用程序?
我打算从我的本地主机连接到Facebook聊天。我将需要从Facebook获取会话密钥。当我提供网站网址为localhost:8080
或ip-address:8080
不起作用时。
我读到有关使用两个不同的API密钥设置两个应用程序的信息,一个在dev m / c上运行,另一个在localhost上运行,但我不太了解。
谁能解释如何在本地主机上运行Facebook应用程序?
Answers:
我前一阵子写了一个关于这个的教程。
最重要的一点是“站点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没有任何关系,我想由于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
您将看到本地主机文件的内容!
这就是为什么实时订阅和取消授权回调(仅提及)不适用于本地主机URL的原因!因为Facebook会ping(发送http请求)到这些URL,但是显然Facebook服务器不会将这些URL转换为您的URL!
http://localhost:8080/auth/index.html
和给出错误的网页是http://localhost:8080/auth/index.html
,而channelurl行是:channelUrl : '//localhost:8080/auth/channel.html',
如果您使用本地主机:
在Facebook->设置->基本中,在“应用程序域”字段中输入“ localhost”,然后单击以“ +添加平台”选择“网站”,
它将创建两个字段“ Mobile Site URL”和“ Site URL”,在“ Site URL”中再次写入“ localhost”。
为我工作。
您还可以编辑“主机”文件并创建域的本地变体。
例
如果您的真实Facebook应用程序地址为“ example.com”,则可以在指向“ localhost”的“主机”文件中创建“ localhost.example.com”(仅可从您的pc访问)域,并在此域下运行本地网站。您可以通过这种方式欺骗Facebook。
C:/Windows/System32/drivers/etc/hosts
或Ubuntu上,位于/etc/hosts
在应用程序的基本设置(https://developers.facebook.com/apps)中的设置->基本->选择应用程序如何与Facebook集成...
使用“站点URL:”和“移动站点URL:”来保存您的生产和开发URL。两个站点都将被允许进行身份验证。我只是使用Facebook进行身份验证,因此不需要任何移动网站重定向功能。我通常在测试身份验证时将“移动站点URL:”更改为我的“ localhost:12345”站点,然后在完成后将其设置回正常。
2013年8月。Facebook不允许为应用程序设置端口域,例如“ localhost:3000”。
因此,您可以使用https://pagekite.net来隧穿您的localhost:port
到正确的域。
Rails开发人员可以免费使用http://progrium.com/localtunnel/。
所以我今天就开始工作。我的网址是http://localhost:8888
。我给Facebook的域名是本地主机。我以为那是行不通的,因为我试图使用FB.api
方法。我不断获得“未定义”的名称和没有源的图像,因此绝对无法访问Graph。
后来我意识到我的问题确实是我只传递了/me
to 的第一个参数FB.api
,而我没有令牌。因此,您需要使用该FB.getLoginStatus
函数来获取令牌,该令牌应添加到/me
参数中。
只需将您的画布网址指定为http:// localhost / app_path即可。
好的,我不确定这些答案的内容,但是我会让您知道在我的工作中一位资深开发人员建议的对我有用的方法。我正在Ruby on Rails中工作,并使用Facebook的JavaScript代码获取访问令牌。
问题:为了进行身份验证,Facebook从您的地址栏中获取了该URL,并将其与文件中的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步:/etc/hosts
在Mac上,编辑主机文件以包括
127.0.0.1 yoursite.dev
该文件将域定向到本地主机。Nginx监听本地主机,并在匹配规则时重定向。
步骤5:以后每次使用开发环境时,请yoursite.dev
在地址栏中使用,而不是localhost:3000
让Facebook正确登录。
您需要设置您的应用程序以在本地主机的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
查找以下行并使用您的设置进行编辑
ServerName本地主机或example.com
SSLCertificateFile /etc/apache2/ssl/apache.crt上的SSLEngine
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
第五步-激活新的虚拟主机
sudo a2ensite default-ssl
sudo service apache2 reload
一个恶作剧:
使用MAMPPRO并创建:服务器名称:您网站上精确的地址(例如:helloworld.com)到磁盘上的网站
在Facebook上: 因此,您也可以保留原始站点URL(例如:helloworld.com)
现在您了解了,当您在地址栏上键入网站时,您就在本地!..并且当您想在线时,只需在MAMP PRO上使服务器不活动。
:)
上面的答案对我都不起作用。我正在FB API 2.5上运行。我的问题综合起来,一旦解决就可以成功
由于动态IP的更改,它可能并不理想,并且可能使用DynDNS或类似方法使IP更“静态”,但它对我有用
在我的情况下,问题表明是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应用的设置。