Dim*_*ira 15 ios firebase firebase-authentication swift3
我正在使用以下代码来检测身份验证提供程序并正确注销
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()
}
Run Code Online (Sandbox Code Playgroud)
但提供商始终是"Firebase".我究竟做错了什么?0_o当我登录twitter时,该代码抛出"Facebook".提前致谢
UPD:是的,我实际上可以存储身份验证提供程序UserDefaults,但可能是Firebase错误.我正在使用Firebase SDK 3.5.2
Fra*_*len 25
由于用户可以使用多个提供商登录其Firebase身份验证帐户,因此现在(通常)是顶级提供商ID Firebase.
但它currentUser有一个providerData属性,提供有关特定提供商的信息.循环FIRAuth.auth()!.currentUser.providerData将给你FIRUserInfo.providerID你正在寻找.
另请参阅有关UID的问题,这些问题处于类似情况:Firebase会返回多个ID,这是唯一的ID?
Swift 4解决方案:
if let providerData = Auth.auth().currentUser?.providerData {
for userInfo in providerData {
switch userInfo.providerID {
case "facebook.com":
print("user is signed in with facebook")
case "google.com":
print("user is signed in with google")
default:
print("user is signed in with \(userInfo.providerID)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
小智 6
我不得不JSON.stringify(currentUser.providerData)
为了看看它是如何组织的:
我终于找到了Auth Provider这样的:
currentUser.providerData[0].providerId
Run Code Online (Sandbox Code Playgroud)
干杯,用你的代码 :)
| 归档时间: |
|
| 查看次数: |
11674 次 |
| 最近记录: |