Firebase 身份验证 - 获取提供商 ID [英] Firebase Auth - get provider ID

查看:17
本文介绍了Firebase 身份验证 - 获取提供商 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 the 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 身份验证帐户,因此顶级提供程序 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,哪个是唯一的?

See also this question about UIDs, which are in a similar situation: Firebase returns multiple IDs, Which is unique one?

这篇关于Firebase 身份验证 - 获取提供商 ID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆