将多个匿名用户数据与Firebase合并

时间:2017-01-08 11:08:12

标签: ios swift firebase firebase-authentication

在我的应用中,用户可以在设备之间无需同步待办事项列表的情况下工作。在这种情况下,我使用anonymous用户帐户。 在AppDelegate.swift

FIRAuth.auth()?.addStateDidChangeListener { auth, user in
            if user != nil {
                print("User auth with account")
            } else {
                FIRAuth.auth()?.signInAnonymously() { (user, error) in
                    if FIRAuth.auth()?.currentUser != nil {
                        print("User auth anonymously")
                    } else {
                        print(error)
                    }
                }
            }
        }

现在,如果用户想要同步待办事项列表,他应该登录。我使用此功能执行此操作:

let credential = FIREmailPasswordAuthProvider.credential(withEmail: self.textFieldLoginEmail.text!, password: self.textFieldLoginPassword.text!)
    FIRAuth.auth()?.currentUser?.link(with: credential, completion: { user, error in
        if error == nil {
            FIRAuth.auth()!.signIn(withEmail: self.textFieldLoginEmail.text!,
                                   password: self.textFieldLoginPassword.text!)
        }
    })

我将待办事项存储在Firebase中,如:

todoitems
----user_id
--------todo-item_id 

但是当我登录时,来自“匿名”帐户的所有数据都已丢失。为什么?它应该将此“匿名”帐户合并到现有及其所有数据。或者我应该手动完成这个?

1 个答案:

答案 0 :(得分:0)

您应该关联帐户,而不是登录。 见https://firebase.google.com/docs/auth/ios/account-linking