When I created a FirebaseAuth with its constructor FirebaseAuth(FirebaseApp var1), I got a question:
What's the difference between the common auth and the .getInstance() version:
The .getInstance() gives you back the auth by which your "getAppInstance()" aka: Firebase App is subscribed.
The "global Auth" of your app if you wish.
So whats the weird thing? If you use the FirebaseAuth(FirebaseApp var1) constructor, it does not uses this "global auth" by default, and yet it still register callbacks when actions are performed directly in it (without getInstance() ofc).
This means that you could have 2 different instanced objects of a FirebaseAuth in 2 different view models, and the listeners of both of them, as long as they are connected via .getInstance().addAuthStateListener(); BOTH will receive the same call back, even if only one of them receives an execution that forces a change in its auth state... this seems obvious,
BUT If you do the aforementioned action without the .getInstance(), only one of the objects will register a callback, as long as they are manually constructed via FirebaseAuth(FirebaseApp var1).
another case:
if you:
.getInstance().addAuthStateListener(); ---> then ---> .signOut()
(without getInstance());
// nothing gets registered, not even by the listener of the same auth object on which you are performing the .singOut();
But If:
.addAuthStateListener(); ---> then ---> .signOut() (with
FirebaseAuth(FirebaseApp var1) constructor)
//Then all goes as normal, but other instances of a Firebase auth within the same app will not receive any callbacks, just the auth object in which you are performing the executions.
Now this behavior in theory would make it seem that one could sing in multiple auths at the same time, but with a simple scan on SO, it seems that that is not the case.
Why the devs did this? (Maybe I'm the only one that is not sure..) Why not give you the global auth by default? ...but people are still creating phantom FirebaseApps to avoid login in on registration, so this doesn't seem to solve any problem or be of anything useful at all.
OR is that constructor the one to solve all problems?
question from:
https://stackoverflow.com/questions/65944993/firebaseauth-whats-the-difference-between-the-common-auth-firebaseauthfireba