Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Use custom domain for firebase function http calls

Is there a way to use a custom domain for firebase cloud functions http hooks.

The default url for cloud functions looks something like this:

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

And

I would like to make it look like this:

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

I looked around if there was some other people looking for the same solution and sure enough I found this:

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

like image 252
Tomas Bulva Avatar asked Apr 13 '18 22:04

Tomas Bulva


People also ask

Does Firebase use HTTP requests?

Requests on your Firebase Hosting site can be proxied to specific HTTP functions. This also allows you to use your own custom domain with an HTTP function.

How do I customize my URL on Firebase?

Open the Dynamic Links page of the Firebase console. If you haven't used Dynamic Links before, click Get Started. Otherwise, click Add URL prefix from the drop-down menu. Then, complete the setup wizard, specifying the domain and path prefix you want to use when prompted.


2 Answers

I have contacted firebase support to get some answers about this. And I was forwarded to this part in the documentation.

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

You can use your own domain with the firebase-cloud-functions. The way to do is is using the firebase-hosting.

  1. Connect custom domain to firebase hosting
  2. Add custom function routing to firebase.json

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

like image 190
Tomas Bulva Avatar answered Oct 02 '22 23:10

Tomas Bulva


The accepted answer is correct, and I created this repository last year to demonstrate the functionality: https://github.com/cjmyles/firebase-react-express

In order to retain the HTML pushState functionality as per https://firebase.google.com/docs/hosting/full-config#rewrites you may want to extend the rules to allow all other requests through to your index.html page, which solves the issue @Boris was facing in his answer.

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

This shouldn't really be needed as the rewrite rules are meant to match the first occurence of a request (so the order matters), but this worked for me by allowing all non-api related requests through.

Please note: At the time of writing this the Firebase documentation states: Firebase Hosting supports Cloud Functions in us-central1 only.

like image 23
Craig Myles Avatar answered Oct 02 '22 23:10

Craig Myles