I'm trying to use Firebase's Firestore
database to handle User
s in my Android app.
Initially I want to use the id returned from the Auth
package (a string), and set that as the id for the users
Collection
in the database. When creating a Document
inside of the Collection
users
, I set a uid
field to that auth package string.
I realize there is no way of setting that string to an indexable value so that queries like:
// get Auth package uid string db.collection("users").document(auth_uid_string);
would work.
So the alternative, I guess, is to use Query.whereEqualTo("uid", auth_uid_string)
which would give me the user in a list, because firestore doesn't assume the query is for a unique value.
I want to avoid the above solution, and devise a way to store the users
of the app in firestore
, and use the auth
package to verify that I fetch the correct user. Is such a solution possible? Or should I try a different firebase service, or even just run a postgres server in heroku or something?
After authentication, create a child with the UID given by Firebase, and set its value to your user class: //get firebase user FirebaseUser user = FirebaseAuth. getInstance(). getCurrentUser(); //get reference DatabaseReference ref = FirebaseDatabase.
The user data for firebase authentication is stored in firebaseLocalStorageDb in IndexedDB .
I am not sure how to do this in android, but with JS I am doing the following:
firebase.firestore().collection('users').doc(currentUser.uid).set(currentUser)
currentUser
is the user object that the authentication function returns (I use signInWithCredential
) It is working perfectly. I am sure you can implement a similar approach in android.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With