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

IT技术 javascript ruby-on-rails facebook heroku
2021-03-05 23:43:05

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

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

这必须从 Canvas URL、Secure Canvas URL、Site URL、Mobile Site URL、Page Tab URL 或 Secure Page Tab URL 派生。检查并更正以下域: localhost

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

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

这在我部署游戏时不会发生,因为 herokuapp.com 被视为有效的应用程序域。

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

6个回答

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

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

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

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

3.) 在上面的框中(设置 => 基本): 应用程序域: localhost

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

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

请注意,您的 URL 还必须列在Settings > Advanced > Valid OAuth redirect URIs 中
2021-04-17 23:43:05
感谢您更新答案。确实,原来的答案似乎不再有效(仍然,感谢您的原始答案 Camilo 和rareclass)。遗憾的是,Facebook 似乎从未宣布过这些变化。
2021-04-19 23:43:05
这个答案不再正确。您不能在基本设置下的应用程序域框中使用 localhost
2021-04-24 23:43:05
这似乎不再起作用 :( 我收到URL Blocked: This redirect failed because the redirect URI is not whitelisted in the app's Client OAuth Settings. 确保客户端和 Web OAuth 登录已打开,并将您的所有应用程序域添加为有效 OAuth重定向 URI。
2021-04-26 23:43:05
你不能再使用“http”了。它必须是“https”。
2021-05-11 23:43:05
  1. 转到http://developers.facebook.com 中的应用设置页面
  2. 单击左上角的下拉箭头(在您的应用程序名称旁边),然后单击“创建测试应用程序”并为其命名
  3. 在该新测试应用程序的“设置”>“基本”中,将应用程序域设置为“本地主机”
  4. 还将网站站点 URL 设置为“ http://localhost:8888 ”(或您使用的任何端口)。
  5. 重要提示:此应用程序与您的在线应用程序具有不同的应用程序 ID 和应用程序机密。所以,最后一步:确保使用测试应用程序的应用程序 ID 和应用程序密钥更新位于本地主机中的代码。相反,位于实时服务器中的代码应该使用主 App 的 ID 和 Secret。
最明智/现代的解决方案与尝试配置您的 prod 帐户以与开发环境一起使用。
2021-04-21 23:43:05
这是截至 2021 年 10 月的正确答案
2021-05-03 23:43:05

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

127.0.0.1 mydomain.com

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

它以这种方式对我有用

它会起作用,我使用 python -m SimpleHTTPServer 在端口 8000 上提供服务,并且example.com:8000/test-facebook.html提供了预期的结果。我假设您在 /etc/hosts 中注册了 127.0.0.1 example.com
2021-04-15 23:43:05
很高兴知道!所以他们似乎忽略了端口,很奇怪。
2021-04-20 23:43:05
如果您使用非标准端口,这将不起作用,如果人们并行开发许多应用程序,通常会这样做。
2021-04-24 23:43:05

对于在 2017 年对此感到不安的每个人。界面再次发生了变化。我想对答案发表评论,但我没有足够的声誉。您的应用程序的 localhost url 现在必须复制到三个地方。目前,(2017年10月26日)序列为:

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

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

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

4.) 在“App Domain”上方的框中复制相同的 URL

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

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

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

这应该有效。

请注意,Facebook 不再允许“http”作为有效的 OAuth 重定向 URI
2021-04-20 23:43:05

只需添加 localhost 作为您的画布 url 或移动站点 url,这将允许您在应用程序域设置中同时拥有 localhost 和 herokuapp.com。然后,一旦您的应用程序投入生产,只需将其删除即可。