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?