将自定义属性添加到 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.
});
我已经搜索过 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.
});