I'm using the following code, to detect auth provider and log out properly
static func logOut() { let auth = FIRAuth.auth()! let provider = auth.currentUser?.providerID switch provider! { case "Facebook": FBSDKLoginManager().logOut() case "Google": GIDSignIn.sharedInstance().signOut() case "Twitter": Twitter.sharedInstance().sessionStore.logOutUserID(TWTRAPIClient.withCurrentUser().userID!) default: print("Unknown provider ID: \(provider!)") return } try! auth.signOut() }
But the provider is always "Firebase". What am I doing wrong? 0_o Once that code throw "Facebook" when I was logged in twitter. Thanks in advance
UPD: Yeah, I actually can store auth provider in UserDefaults
, but maybe it's Firebase bug. I'm using Firebase SDK 3.5.2
providerId is always 'firebase' #1768.
Firebase Authentication provides backend services, easy-to-use SDKs, and ready-made UI libraries to authenticate users to your app. It supports authentication using passwords, phone numbers, popular federated identity providers like Google, Facebook and Twitter, and more.
If the user login with a custom "email/password" you don't know anything else about that user (apart from the unique user id). If a user login with Facebook, or with Google sign in, you can get other information like the profile picture url. It is explained here: firebase.google.com/docs/auth/android/… .
Since a user can sign into their Firebase Authentication account with multiple providers, the top-level provider ID will now (usually) be Firebase
.
But the currentUser
has a providerData
property that provides information on the speciic providers. Looping over FIRAuth.auth()!.currentUser.providerData
will give you the FIRUserInfo.providerID
you're looking for.
See also this question about UIDs, which are in a similar situation: Firebase returns multiple IDs, Which is unique one?
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