将自定义属性添加到 Firebase Auth

Adding Custom Attributes to Firebase Auth

我已经搜索过 Firebase 的文档,但似乎找不到将自定义属性添加到 FIRAuth 的方法。我正在从 Parse-Server 迁移一个应用程序,我知道我可以设置用户的用户名、电子邮件和 objectId。不,我看到我可以选择电子邮件、显示名称和照片 URL。我希望能够添加自定义属性,例如用户名。例如,我可以使用:

let user = FIRAuth.auth()?.currentUser
            if let user = user {
                let changeRequest = user.profileChangeRequest()

                changeRequest.displayName = "Jane Q. User"
                changeRequest.photoURL =
                    NSURL(string: "https://example.com/jane-q-user/profile.jpg")
                changeRequest.setValue("Test1Name", forKey: "usersName")
                changeRequest.commitChangesWithCompletion { error in
                    if error != nil {

                        print("\(error!.code): \(error!.localizedDescription)")

                    } else {

                        print("User's Display Name: \(user.displayName!)")
                        print("User's Name: \(user.valueForKey("name"))")

                    }
                }
            }

当我 运行 代码时,我得到一个错误,指出 "usersName" 不符合键值。这不是正确的代码吗?我似乎找不到其他方法。

您无法向 Firebase Auth 添加自定义属性。已提供默认属性以方便访问用户信息,尤其是在使用提供商(例如 Facebook)时。

如果您需要存储有关用户的更多信息,请使用 Firebase 实时数据库。我建议有一个 "Users" 父级,它将包含所有用户子级。此外,拥有用户 ID 密钥或电子邮件密钥,以便识别用户并将他们与各自的帐户相关联。

希望对您有所帮助。

虽然在大多数情况下您无法向用户添加自定义信息,但在某些情况下您可以。

如果您使用 Admin SDK 创建或修改用户,则可以创建自定义声明。通过访问声明对象的属性,可以在您的客户端中使用这些自定义声明。

Swift 来自 Firebase 的代码 documentation:

user.getIDTokenResult(completion: { (result, error) in
  guard let admin = result?.claims?["admin"] as? NSNumber else {
    // Show regular user UI.
    showRegularUI()
    return
  }
  if admin.boolValue {
    // Show admin UI.
    showAdminUI()
  } else {
    // Show regular user UI.
    showRegularUI()
  }
})

Node.js 添加声明的代码:

// Set admin privilege on the user corresponding to uid.

admin.auth().setCustomUserClaims(uid, {admin: true}).then(() => {
// The new custom claims will propagate to the user's ID token the
// next time a new one is issued.
});