如何使用Firebase通过Facebook,电子邮件或Google使用Swift检测用户是否已登录我的应用

Tay*_*son 4 firebase swift firebase-authentication

我想检测用户是否使用Facebook或电子邮件等登录...

我找到了Android的答案,但我正在使用Swift for iOS编程,我不知道如何完全翻译代码.

android/java代码是:

for (UserInfo user:FirebaseAuth.getInstance().getCurrentUser().getProviderData()) {
if (user.getProviderId().equals("facebook.com")) {
System.out.println("User is signed in with Facebook");
  }
}
Run Code Online (Sandbox Code Playgroud)

我试图翻译它,但我似乎无法弄清楚如何访问这些值.我继续得到一个内存地址.

这是我的快速代码:

let authenticatedWith = FIRAuth.auth()?.currentUser?.providerData
Run Code Online (Sandbox Code Playgroud)

par*_*par 8

根据文档,providerData是一系列FIRUserInfo结构.

您发布的Android代码的(大部分)等效Swift代码如下所示:

if let providerData = FIRAuth.auth()?.currentUser?.providerData {
    for userInfo in providerData {
        switch userInfo.providerID {
        case "facebook.com":
            print("user is signed in with facebook")
        default:
            print("user is signed in with \(userInfo.providerID)")
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,该providerID属性也可以直接在属性FIRUser返回的结构上使用currentUser,因此您可以这样做:

if let providerID = FIRAuth.auth()?.currentUser?.providerID {
    switch providerID {
    default:
        print("user is signed in with \(providerID)")
    }
}
Run Code Online (Sandbox Code Playgroud)