Firebase身份validation – 获取提供商ID

我正在使用以下代码来检测身份validation提供程序并正确注销

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当我loginTwitter时,该代码就会抛出“Facebook”。 提前致谢

UPD:是的,我实际上可以在UserDefaults存储auth提供程序,但也许是Firebase的bug。 我正在使用Firebase SDK 3.5.2

由于用户可以通过多个提供商login其Firebase身份validation帐户,因此顶级提供商ID现在(通常)将成为Firebase

但是当前用户有一个providerData属性 ,提供有关特定providerData信息。 循环遍历FIRAuth.auth()!.currentUser.providerData将为您FIRUserInfo.providerID您正在查找的FIRUserInfo.providerID

另请参阅有关UID的问题,这些问题也有类似的情况: Firebase会返回多个ID,这是唯一的ID?