Customer specific Firebase storage - firebase

I have an Flutter app that use Firebase as backend. Initially, a Firebase project and a collection is created to store data from different customers using the app. A key field "Customer" is use to separate the data among different users in the big pool.
In order to enhance the security and customise the billing incure in Firebase, I would like to separate different customer with their own Firebase account/project/database setup, the process is:
Whenever a new customer install the app and run it at the first time, the app will ask the customer to create his/her firebase account and then pass the account information to the app. Then, the app can consume the customer specific firebase for their private data storage.
Is there any experts can give me a hints how can I achieve this?
Thank you!

To programmatically create a project you can use this GCP create API and then link it to Firebase with this API. But they'd need an existing account already.
Alternatively you can have them create the account and project on their own through the console, and then use the list API to get a list of projects, have them pick one, and get the project config.
All of these are pretty raw APIs though, so you'll have to play around a bit to get the calls exactly right. Many of the REST APIs will have an API explorer link, which is typically helpful in figuring it out.

Related

Multiple Authentication Firebase?

I am trying to figure out a problem I currently have. I have a software platform where restaurant owners can make and publish their own mobile apps. Menu access, reservation control, etc etc. I am using Firebase as my backend.
For each restaurant app I make, requires a customer login. The problem is that the customer can download another app from my restaurant client and has the ability to log in with the same credentials because I am using the same Firebase project for multiple apps, under the same company.
This is not what I want.. can I make multiple instances of Firebase Authentication? Or when the user registers, do I hardcode the username and password into the database, and check that, upon registration and signing in? If I did that, I would lose the power of third party log ins.
Please let me know of any ideas you guys might have..
Thanks!
Jorge
Firebase Auth can't have multiple instances per project. You would need to create multiple projects to in order to get more instances.
However, what you're talking about could be called "multi-tenancy", where you have multiple organizations each sandboxed from each other in a single project. For that, you will need to adopt Google Cloud Identity Platform and work with it using the Firebase APIs as described by the documentation.

Use Firebase Auth data and users for multiple projects and apps

If I have multiple apps with Firebase (different types and kinds) but want to be able to have 1 user base for all of them (1 account for all apps, even if they only use 1) how would I do this? I was thinking either 1. cloud function (every time someone signs up, add them as a user in the other apps) or 2. A separate project for Auth only and configure both of them in the app, but that might mean requests to firestore, storage, and functions aren’t authorized. NOTE: I'm willing to use GCP products separate from firebase to accomplish this.
If the apps are all part of the same suite, you can add them to a single Firebase project. This is by far the easiest way to do this, but there is a hard limit on how many apps you can have in a project in this way (according to the FAQ, this is 30 at the moment).
If the apps are not all part of the same suite, or you need more than the limit, your only option is to use custom authentication. This means you'll create a custom authentication provider that takes the user's credentials, verifies them, and then creates a UID and token for that user to the client which then uses it to sign in to Firebase.
In the back-end you could possible use a single Firebase project for then generating all these users, although I'll admit it's been a few years since I did that.

One firebase database for every customer

I have one mobile app, and every customer have a lot of data under user account. It is possible to make one database firebase for each customer ? Xamarin app...
You can create multiple databases directly from the Firebase Console as mentioned here.
In case you need to create the databases programmatically as new users sign up or so, then you need to use Firebase Realtime Database Management API.
To create a new database, make a POST request:
https://firebasedatabase.googleapis.com/v1beta/{parent=projects/*/locations/*}/instances

How to check which number of users(email/password auth) are currently logged in my apps from firebase console manually?

I need to see not total number of user. i only want them who are currently active (not signed out user) to my app through email and password. I want to see it from firebase console. help me please.
The Firebase Console doesn't show the number of users that are currently signed in to Firebase Authentication.
If you want to know how many users are actively using your app, you'll have to build something yourself.
Gaurav's comment about using an Analytics tool is a good hint. Even though Firebase's analytics SDK isn't available for the web, there are other analytics tools out there that would allow you to track the number of active users.
Another way is to write some information to a cloud database each time a user takes an action in your app. Then you can query that database to determine how many unique users recently took actions. That is actually pretty much what most analytics packages to. :)
A final option would be to use the Firebase Realtime Database's presence system, which uses a more active approach to detect how many users are currently connected to the database.

Allow Firebase collaborators access to specific nodes

I have an app that uses Firebase and I have a few people that need to be able to update data in the Firebase Dashboard. Luckily, Firebase added the feature to add collaborators. But the problem is, I don't want these collaborators to have access to every node of the JSON. Is there a way that I can assign collaborators specific access to certain nodes of the data structure or no?
Any feedback would be great. Thanks!
Collaborators on the Firebase project/app have access to all data. There is no way to limit that.
It sounds like you are looking to add application administrator. For this you'll have to develop your own application dashboard, where you add such functionality. These application administrators are then just regular users of your app and you can use Firebase security rules to determine what data they have access to.
Very similar: Stopping accidental deletion of a firebase DB via Firebase Dashboard

Resources