Facebook应用:本地主机不再作为应用域


94

我一直在使用Rails和jQuery为Facebook编写游戏。自从我开始使用Facebook Javascript SDK以来,使用localhost作为应用程序域似乎可以正常工作。我能够在本地和Heroku上测试我的游戏。

在过去的一天中,Facebook似乎已对其开发人员UI进行了重大更新。现在,如果我将localhost添加为应用程序域,它将给我以下错误:

必须从“画布URL”,“安全画布URL”,“站点URL”,“移动站点URL”,“页面标签URL”或“安全页面标签URL”派生。检查并更正以下域:localhost

我的游戏现在也无法在本地运行,当Javascript SDK登录用户时出现错误:

API错误代码:191 API错误描述:应用程序不拥有指定的URL错误消息:无效的redirect_uri:应用程序配置不允许给定的URL。

部署游戏时不会发生这种情况,因为herokuapp.com被认为是有效的应用程序域。

如果我不能再使用localhost或127.0.0.1,应该如何开发和测试游戏?


您对“画布URL”,“安全画布URL”,“站点URL”,“移动站点URL”,“页面标签URL”或“安全页面标签URL”有什么值?
Igy 2014年

2
嗨,我知道了,您必须创建一个新的“测试应用程序”,他们应该在应用程序设置页面上将其提及,进行1h搜索最终使其在localhost:port上运行
Louis Grellet

@LouisGrellet,好吧,我得到了“不允许使用顶级域名”。就像您说的那样,f ***** g
Abhijit Sarkar,

1
“在客户端oAuth设置下,如果使用“对重定向URI使用严格模式”,请确保将其设置为“否”并保存命中。” - wp-native-articles.com/blog/news/...
eflat

Answers:


241

协议似乎一直在变化,并且今天接受的答案对我不起作用。如果它对其他搜索者有帮助,这对我有用:

  • 所有更改均在“基本”标签下的“设置”页面上进行

1.)在第一个选项框下的中心,单击“ +添加平台”,然后选择“网站”(或适合您的应用的任何内容。)

2)在刚添加的网站出现的框中: 网站URL: http://localhost:3000/

3.)在上方的框中(设置=>基本): App Domain: localhost

4.)在右下角-点击“保存更改”

5.)确保已复制应用ID,并将其正确粘贴到代码中。(如果您再次需要该ID,则在该页面的第一个框中。)


1
感谢您更新答案。确实,原来的答案似乎不再有效(仍然,谢谢您对卡米洛和稀有阶级的最初回答)。遗憾的是,Facebook似乎从未宣布这些变化。
拉文斯汀2014年

1
Facebook必须最近对此进行修复,localhost因为以前无法​​使用。感谢您的好答案。
dbasch 2014年

25
请注意,您的URL也必须在“设置”>“高级”>“有效的OAuth重定向URI”中列出。
卡拉·布莱特韦尔2014年

3
似乎不再起作用了:(我被阻止
Maria Ines Parnisari'Feb 16'17

3
您不再可以使用“ http”。必须是“ https”。
iJames

31
  1. 转到位于http://developers.facebook.com的应用程序的设置页面
  2. 单击左上角(应用程序名称旁边)的下拉箭头,然后单击“创建测试应用程序”并为其命名
  3. 在该新测试应用程序的设置>基本中,将应用程序域设置为“本地主机”
  4. 还将“网站站点” URL设置为“ http:// localhost:8888 ”(或您使用的任何端口)。
  5. 重要提示:此应用与在线应用具有不同的应用ID和应用秘密。因此,最后一步:确保使用Test App的App ID和App Secret更新位于本地主机中的代码。相反,位于实时服务器中的代码应使用主应用程序的ID和密码。

最明智/现代的解决方案与尝试将产品帐户配置为也可以与开发环境一起使用。
卡尔·爱德华兹

13

您仍然可以测试应用程序而无需将其部署在heroku之类的远程服务器上。诀窍是通过etc/hosts这种方式更新文件:

127.0.0.1 mydomain.com

然后在Facebook App的设置中,键入[ http://] mydomain.com,不带“ [”和“]”

这样对我有用


如果您使用非标准端口,那么这将无法正常工作,这是人们并行开发许多应用程序时通常会执行的操作。
mgol

1
它将正常工作,我使用python -m SimpleHTTPServer在端口8000上提供服务,并使用example.com:8000/test-facebook.html提供了预期的结果。我假设您在/ etc / hosts中注册了127.0.0.1 example.com
Patrick

很高兴知道!因此,他们似乎然后会忽略端口,这很奇怪。
mgol

9

对于每个在2017年对此感到烦躁的人。界面再次更改。我想评论这个答案,但是我没有足够的声誉。您的应用程序的localhost网址现在必须复制到三个位置。当前(2017年10月26日)的顺序为:

1.)单击左侧菜单中的“设置”。

2.)在第一个选项框下方的中心,单击“ +添加平台”,然后选择“网站”(或适合您的应用的任何内容。)

3.)在刚添加的网站出现的框中,复制您的localhost站点URL(fe http:// localhost:3000 /

4.)在“应用程序域”上方的框中复制相同的URL

5.)在右下角-点击“保存更改”

6.)在“产品”下的左侧菜单中,单击“ Facebook登录”(如果不可用,则通过“ +添加产品”添加它)

7.)您现在处于Facebook登录设置。将相同的网址复制到“有效的OAuth重定向URI”字段中

这应该工作。


2
请注意,Facebook不再允许有效的OAuth重定向URI使用“ http”
OmNiOwNeR

5

只需添加localhost作为画布URL或移动网站URL,这将使您在App Domain设置中同时拥有localhost和herokuapp.com。然后,一旦您的应用正式投入生产,就将其删除。



5

使用Firebase的解决方案

为了使它能够正常运行localhost3000我做了以下工作:

  1. 建立应用程式

创建测试应用

  1. 现在,从箭头下拉菜单(左上方)中选择“ +创建测试应用程序”。

在此处输入图片说明

  1. 添加localhost到应用程序域

在此处输入图片说明

  1. http://localhost:3000/通过选择“ +添加平台” 添加到站点URL

在此处输入图片说明

到目前为止,我已经遵循了此处提交的所有先前答案,但是没有任何效果。

所以...

  1. 在左侧菜单中,选择“添加产品”

  2. 添加“ Facebook登录”

您将看到一个带有默认域的工作流转盘http://localhost:3000/,单击“继续”直到最后。

  1. 从产品菜单中选择“ Facebook登录>设置”。

  2. 输入您的Firebase OAuth重定向URI(在您的Firebase控制台https://console.firebase.google.com中启用Facebook登录时可找到,以下示例)

在此处输入图片说明

  1. 粘贴URI并保存。

在此处输入图片说明

做完了


2

尝试使用带有端口的URL,例如

    http://localhost:8000/

我遇到了同样的问题,并立即找到了此解决方案。


1
您需要添加“ Facebook上的App”作为平台,并将localhost:8000添加到Canvas URL中
Tachun Lin

1

这对我在heroku中有效,但localhost不适(对我而言)。希望对您有所帮助

1.)在第一个选项框下的中心,单击“ +添加平台”,然后选择“网站”(或适合您的应用的任何内容。)

2)在刚添加的网站出现的框中:网站URL:http ://MYAPP.herokuapp.com/(用您的应用名称替换MYAPP)

3.)在上方的框中(设置=>基本):应用程序域:MYAPP.herokuapp.com(用您的应用程序名称替换MYAPP)

4.)在右下角-点击“保存更改”


1

只是为其他可能像我一样正在为此苦苦挣扎的人提供的便条。我还无法使它与“测试”应用程序一起使用。使用我的实际应用设置(只需添加

"http://localhost:3000/"

到我的画布网址)按照其他所有人的建议进行。似乎测试应用程序与实际应用程序不相等。


1

我的Rails应用程序经常遇到一个问题,该问题通常与http:// localhost:3000一起运行,因为Facebook现在需要有效的OAuth重定向才能使用https。

要在本地使用https,我使用了[ngrok] [1],它允许您通过提供隧道来使用https。去做这个:

  1. 我去了他们的网站并下载了他们的程序
  2. 我为程序提取了文件
  3. 在控制台中,我进入了ngrok提取到的目录,并在Windows机器上输入了“ grok http 3000”,其他人可能会使用“ ./grok http 3000”。
  4. 输入该内容后,ngrok提供了一个https地址,我将其放入Facebook的“有效OAuth重定向URI”字段中
  5. 然后,我启动了服务器,并能够使用该https地址而不是localhost:3000对其进行访问

1

要进行本地测试,您需要做的就是关闭应用程序,或将Facebook应用程序置于开发模式。然后,Facebook将允许您一个人访问该应用程序


0

对我来说,它像这样工作:

配置facebook应用程序仪表板:

*在“基本”标签上:

1)将应用程序域留空。

2)删除任何平台。含义:没有网站,没有画布平台。(因此,没有网站网址字段可填写)

*在“高级”标签上:

3)我输入了有效的OAuth重定向URI:

http://localhost/myappfolder/redirect.php

4)关于我的代码,插入我的c:/xampp/htdocs/localhost/myappfolder/index.php(此文件使loginURL):

$helper = new FacebookRedirectLoginHelper('http://localhost/myappfolder/redirect.php');  

在redirect.php文件中:

$helper = new FacebookRedirectLoginHelper('http://localhost/myappfolder/redirect.php');  

我参加了一个会议!最后!最终不必吊死自己:P

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.