无法使用自定义域将Firebase动态链接添加到项目中

时间:2019-03-15 03:00:14

标签: firebase-hosting firebase-dynamic-links

在使用page.link URL前缀(当时唯一的选项)之前,我已经在其他项目中创建了Firebase动态链接。但是,今天为新项目启用动态链接时,不再显示该选项。 docs for custom domains似乎今天已更新。不幸的是,尽管他们提供了一些有用的示例,但并未说明如何以我能理解的方式解决我的问题。

error configuring dynamic links for custom domain

因此,此消息似乎表明我需要“将链接放在子路径下”。在我看来,在此处添加/link路径前缀应该可以实现?但是在进行了更改之后,我得到了相同的错误消息。

  

您似乎已经在此托管站点上提供了内容。将链接放在子路径下,以避免与现有内容冲突。

我想尝试解决此问题,我去了我的项目并添加了建议的Hosting配置并进行了部署。

firebase.json:

{
  "hosting": {
    "public": "dist",
    "ignore": [
      "**/.*"
    ],
    "appAssociation": "AUTO",
    "rewrites": [
      {
        "source": "/link/**",
        "dynamicLinks": true
      },
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

即使等待了一个小时,我仍然遇到相同的错误,而且我不知道该怎么办。

请注意,由于我在www.devintent.com上托管了Angular单页应用程序,因此我将重写为/index.html

无论我做什么,都会出现此错误,并且Continue按钮保持禁用状态。我尝试使用裸域devintent.com而不是www.devintent.com,但这无济于事。我尝试使用links.devintent.com,但遇到了相同的错误。

如果我从disabled按钮中手动删除Continue,则会收到以下错误消息:

configure path prefix manually message 这链接到docs for manually configuring hosting for dynamic links,其中有一些我已经完成的步骤。单击Check Again按钮只会使我回到上面第一张图片中的相同错误。


不使用自定义域的解决方法

我现在很高兴使用page.link链接,我只需要创建一个动态链接并对此任务进行解锁,但是我无法在控制台中找到允许我使用的任何方法可以做到这一点。

对此进行更新:我发现我需要将子域添加到page.link URL中。工具提示最后会显示“或Google提供的免费域(例如,yourapp.page.link)”。我本来希望它不那么突出(因为我已经很长时间没有找到它了)。目前,对我来说,使用devintent.page.link可以解决。


但是,我不确定自定义域配置为何不起作用,如果在具有现有托管配置和自定义域的项目中出现此类复杂情况,为什么它会成为默认设置。

6 个答案:

答案 0 :(得分:7)

我对根(apex)域也有类似的问题。基本上,如果前缀(在我的情况下为顶点域)是给出200个状态响应的URL,则它将不被接受。在我的情况下,index.html文件夹中有一个public文件。我将其重命名为其他名称,并且可以正常工作。

这是我的firebase.json

{
  "hosting": {
    "public": "public",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "appAssociation": "AUTO",
    "rewrites": [ { "source": "/**", "dynamicLinks": true } ]
  }
}

答案 1 :(得分:3)

我遇到了同样的问题,并且遇到了同样的错误。问题是我将所有路由重定向到 index.html 。解决方案是通过排除将路由限制为 index.html

"rewrites": [
  {
    "source": "/link/**",
    "dynamicLinks": true
  },
  {
    "source": "!/link/**",
    "destination": "/index.html"
  }
]

将新配置部署到Firebase Hosting之后,可以根据需要使用mydomain.com/link。

答案 2 :(得分:2)

在使自定义域正常运行方面,您所做的一切看起来都是正确的。我想知道您是否正在使用最新版本的firebase-tools(CLI)。在版本6.5.0中添加了对动态链接的自定义域支持。

好消息是page.link支持仍然存在,但在新的UI流程中并不那么明显。获取page.link域的方法是开始键入所需的子域,并且应该在UI中弹出一个建议。我提供了一个屏幕截图,以显示其工作原理。

Adding page.link domain

希望这会有所帮助,

杰夫

答案 3 :(得分:1)

对我们来说,问题是我们使用默认的Firebase托管站点在所有路线(“ / **”)上为我们的Web应用程序提供服务。从动态链接的另一个域为我们的Web应用程序提供服务是我们应采取的方式,因为链接不应干扰Web应用程序。

要提供来自不同于我们Web应用程序的其他域的链接,我创建了一个仅用于链接的新站点,并将我们的自定义域附加到该站点。现在,我们有两个Firebase托管站点。第一个默认值用于我们的网络应用程序,第二个默认值用于Firebase动态链接。

此设置完成后,带有链接到第二个Firebase托管站点的自定义域的动态链接可以正常工作。 有关更多详细信息,请参见屏幕截图: enter image description here

EDIT1:@cocacrave请求的网络应用的firebase.json:

mydf = DataFrame(a = 1:4, b = repeat(1:2,2), c=4:-1:1)
bypreserve(mydf, :b,  x -> sum(x.a))
│ Row │ a     │ b     │ c     │ x1
│     │ Int64 │ Int64 │ Int64 │Int64 
├─────┼───────┼───────┼───────┤───────
│ 1   │ 1     │ 1     │ 4     │ 4
│ 2   │ 2     │ 2     │ 3     │ 6
│ 3   │ 3     │ 1     │ 2     │ 4
│ 4   │ 4     │ 2     │ 1     │ 6

答案 4 :(得分:1)

"appAssociation": "AUTO",
"rewrites": [
  {
    "source": "/page/**",
    "destination": "/index.html"
  },
  {
    "source": "/link/**",
    "dynamicLinks": true
  }
]

有效!我猜是由“源”的原始配置引起的错误:“ **”。范围可能太大吗?尽管医生说“ / __ / *”具有较高的优先级。 (https://firebase.google.com/docs/hosting/full-config?authuser=0#hosting_priority_order

答案 5 :(得分:0)

如果您在使用子域时遇到此错误,则此解决方案对我有用:

{
  "hosting": [
    {
      "target": "app",
      "public": "build",
      "ignore": [
        "firebase.json",
        "**/.*",
        "**/node_modules/**"
      ],
      "appAssociation": "AUTO",
      "rewrites": [
        {
          "source": "/**",
          "destination": "/index.html"
        }
      ]
    },
    {
      "target": "links",
      "public": "build",
      "ignore": [
        "**"
      ],
      "appAssociation": "AUTO",
      "redirects": [
        {
          "source": "/",
          "destination": "{{your domain}}",
          "type": 302
        }
      ],
      "rewrites": [
        {
          "source": "/**",
          "dynamicLinks": true
        }
      ]
    },
    {
      "target": "invite",
      "public": "build",
      "ignore": [
        "**"
      ],
      "redirects": [
        {
          "source": "/",
          "destination": "{{your domain}}",
          "type": 302
        }
      ],
      "appAssociation": "AUTO",
      "rewrites": [
        {
          "source": "/**",
          "dynamicLinks": true
        }
      ]
    }
  ]
}