Firebase登录用户身份验证回调结果中用户的数据类型是什么

时间:2018-01-17 09:18:19

标签: ios swift firebase firebase-authentication

我是swift编程的新手。我试图重构我的代码,看起来更具可读性。

使用Google帐户成功登录后登录到firebase身份验证。我想使用UserDefaults保存用户基本信息,该操作将由saveUserUsingUserDefault(user: USER)方法执行,该方法将从firebase身份验证中获取用户结果。

但是当我编写方法时,我需要知道用户的数据类型

func saveUserUsingUserDefault(_ user: iDontKnowWhatDataTypeShouldBeUsedInHere ) {}

我试图跳转到Xcode中的定义,但我卡住了,我不知道应该使用哪种数据类型。我无法找到数据类型。我也无法在目标C中读取代码。这里是我使用的代码。

Auth.auth().signIn(with: credential) { (USER, error) in
    if let error = error {
        print("failed to create firebase user using google account")
        print("\(error.localizedDescription)")
        return
    }

    print("user successfully logged into firebase")

    saveUserUsingUserDefault(user: USER)
    self.login()
}

func saveUserUsingUserDefault(_ user: iDontKnowWhatDataTypeShouldBeUsedInHere ) {
    //Save User basic information using User Default Data Persistance
    let basicUserInformation = [
            "fullname" : user.displayName,
            "email" : user?.email,
            "city" : ""
        ]

    UserDefaults.standard.set(basicUserInformation, forKey: "basicUserInformation")

    // assign the value to superglobal variable 'userInformation' in AppDelegate
    userInformation = UserDefaults.standard.object(forKey: "basicUserInformation") as? [String:Any]
}

1 个答案:

答案 0 :(得分:1)

默认情况下,Firebase已经有了获取currentUser的方法,因此您无需保存用户默认值。除此之外,建议不要将当前用户保存在用户默认设置中以获得最佳实践。在Firebase Auth中,您可以通过以下方式获取currentUser:

let auth = Auth.auth()
let currentUser = auth.currentUser

通过在auth中调用currentUser属性返回的currentUser类型将以User(Firebase用户类型)类型返回,它将具有displayName,uid,email以及默认情况下所需的所有内容。

我通常创建自己的FirbaseController来处理所有Firebase内容并在里面创建getCurrentUser()方法。