Firebase Auth - 获取提供商ID [英] 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()
}
但提供商始终是Firebase。我究竟做错了什么? 0_o当我登录twitter时,该代码抛出Facebook。提前致谢
But 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:是的,我实际上可以在 UserDefaults
中存储身份验证提供程序,但可能是Firebase错误。我正在使用Firebase SDK 3.5.2
UPD: Yeah, I actually can store auth provider in UserDefaults
, but maybe it's Firebase bug. I'm using Firebase SDK 3.5.2
推荐答案
由于用户可以使用多个提供商登录其Firebase身份验证帐户, -level提供者ID现在(通常) Firebase
。
Since a user can sign into their Firebase Authentication account with multiple providers, the top-level provider ID will now (usually) be Firebase
.
但 currentUser
有一个 providerData
属性,提供有关特定提供商的信息。循环 FIRAuth.auth()!。currentUser.providerData
将为您提供 FIRUserInfo.providerID
。
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.
另请参阅有关UID的问题,这些问题类似: Firebase会返回多个ID,这是唯一的ID?
See also this question about UIDs, which are in a similar situation: Firebase returns multiple IDs, Which is unique one?
这篇关于Firebase Auth - 获取提供商ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!