【问题标题】:Meteor ROOT_URL setting to make accounts-facebook work when behind apache proxyMeteor ROOT_URL 设置以使帐户-facebook 在 apache 代理之后工作
【发布时间】:2014-06-10 14:27:47
【问题描述】:

我在 localhost:3000 上运行流星,我设置了 apache 以使用虚拟主机和 mod_proxy 将域请求代理到流星实例。

我在尝试使用 accounts-facebook 登录我的流星应用时遇到此错误:

应用程序配置不允许给定 URL。: 一个或 应用程序的设置不允许更多给定的 URL。它必须 匹配网站 URL 或画布 URL,或者域必须是子域 应用程序的域之一。

我认为这是因为我的 ROOT_URL 是 http://localhost:3000 。如果我将 ROOT_URL 更改为域,那么流星当然会尝试监听域,但不能,因为我的 apache 服务器妨碍了。

有没有一种方法可以在没有其他 IP 地址的情况下完成这项工作?

【问题讨论】:

  • 如果在测试时将mydomain.com localhost 添加到/etc/hosts 文件中会怎样?
  • @DavidWeldon,我非常喜欢这个主意。不过刚刚试了一下,apache还是拦截了请求。
  • 我不明白你的问题。您可以将 ROOT_URL 更改为您想要的任何 URL。并使用 'mrt -p port (dev)' 或 'PORT=port mrt (release)' 来监听你想要的任何端口。希望对您有所帮助。
  • @FlyingFisher,关键问题是 account-facebook 需要 ROOT_URL 来匹配客户端所在的实际 URL,因为 OAuth 过程的一部分是检查请求是否来自 Facebook 中允许的域开发者设置。因为我试图在有 Apache 服务的其他网站的服务器上运行,而让流星和 Apache 共享 IP 地址的唯一方法是使用 mod_proxy。因此,ROOT_URL 需要为localhost 用于服务目的,但mydomain.com 用于帐户-Facebook。 Linode 也不会给我第二个 IP 地址(GRRR)。

标签: facebook apache proxy meteor


【解决方案1】:

我可以通过简单地让它工作

# /etc/hosts

127.0.0.1   localhost.localdomain   localhost

Facebook 设置如下图所示。我设置了一个辅助(移动)网址指向http://localhost:3000

我已经创建了一个像这样的整个 facebook 应用程序,包括登录、访问 graph-api 等。一切都在在线和开发环境中运行

【讨论】:

    【解决方案2】:

    来自 Meteor 文档,

    确保您的 $ROOT_URL 与授权域和回调匹配 您使用外部服务配置的 URL(例如,如果您 在代理服务器后面运行 Meteor,$ROOT_URL 应该是 外部可访问的 URL,而不是代理内部的 URL)。

    在我的例子中,我的应用程序正在使用 Apache 代理服务器后面的 mod_proxy 侦听配置的端口,假设它正在侦听 http://www.example.com:8080。我有其他应用程序在其他端口上运行。

    为了开始,我在 Facebook 上将 Site URLValid OAuth redirect URIs 设置为 @987654322@App Domains 设置为 www.example.com。在我的机器上,我将ROOT_URL 设置为@987654323@,这是可以从外部访问的。

    这样的配置对我来说不需要第二个 IP 地址。

    【讨论】:

      猜你喜欢
      • 2017-02-17
      • 1970-01-01
      • 2017-11-28
      • 2017-07-19
      • 2013-06-12
      • 2015-11-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多