Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Firebase Auth - get provider ID

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

like image 957
Dima Rostopira Avatar asked Sep 02 '16 11:09

Dima Rostopira


People also ask

What is provider ID in Firebase?

providerId is always 'firebase' #1768.

What is provider in Firebase authentication?

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.

How can I get user details from Firebase?

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/… .


Video Answer


1 Answers

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?

like image 74
Frank van Puffelen Avatar answered Oct 02 '22 17:10

Frank van Puffelen