2016-09-02 25 views
10

を取得し、私は認証プロバイダを検出し、適切にFirebase認証 - プロバイダのID

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() 
} 

をログアウトするために、次のコードを使用しています。しかし、プロバイダは常に「Firebase」です。私は間違って何をしていますか? 0_o私がツイッターにログインしたときにそのコードが "Facebook"を投げると。前もってありがとう

UPD:実際には、私は実際にUserDefaultsに認証プロバイダを格納できますが、Firebaseのバグかもしれません。私はFirebase SDK 3.5.2を使用しています

+0

は 'FIRAuth.auth()!サインアウト()'うまくいきませんでしたか? – KhanXc

+0

@KhanXcは動作しますが、十分ではないと思っていました。 Androidでは、別のGoogleアカウントを選択するケースにつながる –

+0

なぜプロバイダを取得できないのですか?いずれにしてもそれが必要ならば。それはバグか、私は何か間違っている –

答えて

19

ユーザは複数のプロバイダでFirebase認証アカウントにサインインできるので、トップレベルのプロバイダIDは通常はFirebaseになります。

しかし、具体的なプロバイダに関する情報を提供するcurrentUser has a providerData propertyFIRAuth.auth()!.currentUser.providerDataをループすると、あなたが探しているFIRUserInfo.providerIDが得られます。

も似たような状況にあるのUID、については、この質問を参照してください:Firebase returns multiple IDs, Which is unique one?

関連する問題