使用自定义域进行firebase函数http调用

时间:2018-04-13 22:15:11

标签: firebase dns google-cloud-functions

有没有办法为firebase云功能http钩子使用自定义域。

云功能的默认网址如下所示:

https://us-central1-my-awesome-app.cloudfunctions.net/ios-oatuh/

并且

我想让它看起来像这样:

https://myawesomeapp.com/ios-oauth/

我环顾四周是否有其他人在寻找相同的解决方案,我确实找到了这个:

https://stackoverflow.com/questions/43482224/firebase-cloud-functions-custom-domain

3 个答案:

答案 0 :(得分:11)

我已联系firebase支持以获得有关此问题的答案。 我被转发到文档中的这一部分。

https://firebase.google.com/docs/hosting/functions#create_an_http_function_to_your_hosting_site

您可以将自己的域与firebase-cloud-functions一起使用。要做的是使用firebase-hosting。

  1. 将自定义域连接到firebase托管
  2. 将自定义函数路由添加到firebase.json

    {
      "hosting": {
        "public": "public",
    
        // Add the following rewrites section *within* "hosting"
        "rewrites": [{
          "source": "/bigben", "function": "bigben"
        }]
    
      }
    }
    
  3. 部署到firebase

答案 1 :(得分:3)

接受的答案是正确的,我去年创建了这个存储库来演示其功能:https://github.com/cjmyles/firebase-react-express

为了保留https://firebase.google.com/docs/hosting/full-config#rewrites的HTML pushState功能,您可能需要扩展规则,以允许所有其他请求通过您的index.html页面,从而解决了@Boris在其答案中面临的问题。

"rewrites": [
    {
        "source": "/api/**",
        "function": "app"
    },
    {
        "source": "!/@(api)/**",
        "destination": "/index.html"
    }
]

由于重写规则旨在匹配请求的首次出现(因此顺序很重要),因此实际上并不需要这样做,但这对我来说是允许所有非api相关请求通过的。

请注意:在撰写本文时,Firebase documentation指出:Firebase托管仅在us-central1中支持Cloud Functions。

答案 2 :(得分:0)

如果有人遇到此问题,Thomas Bulva的答案是正确的,但对我来说,我还必须从firebase.json文件中删除以下代码段。

它正在将任何请求重定向到index.html页面。我的https://us--<>。cloudfunctions.net URL运行正常;当我执行/ helloWorld时,它将带我到“ Firebase的Hello!”。但是,如果我在自定义域中尝试相同的操作,它将失败。删除此固定它。

{
   "source": "**",
   "destination": "/index.html"
},