也许 Firebase 给了我足够的绳子让我上吊。
通过提供的电子邮件和密码创建用户时,我还可以提供 user_id。
太棒了。由于我数据库中的大部分主键都是 uuid/guid,我认为将用户表中的 user_id 设为 uuid pk 会更好。
成功了。
直到我让用户通过第三方进行身份验证。 Firebase 回来创建了我可爱的用户。使用 Firebase UserId。
这不是 uuid。
现在我发现自己考虑必须将数据库中的 userId 字段重新设计回文本类型,因为 Firebase UserId 不是 uuid。
有没有办法告诉 Firebase 将所有 user_id 值设为 guids?我查了一下,但在使用 OAuth2 告诉 Firebase 时我没有看到选项,“当你回来找用户时,请将该 user_id 设置为 uuid/guid,请...”
编辑:可能我没说清楚。我曾经/正在使用 Firebase UID 作为我的 pk,而不是,例如,用户的电子邮件地址。但是,如果我只能在提供电子邮件/密码来创建用户时(而不是在通过第 3 方 OAuth2 进行身份验证时)控制该 UID 的值/格式,那么我就无法采用我的首选格式。
第二次编辑:
通过电子邮件/密码创建用户时,我是通过 Firebase Admin SDK 这样做的。浏览器将电子邮件/密码传递给 API,然后 API 创建用户——完全控制 UID。
private async Task<UserRecord> AddFirebaseLogin(UserForCreation userForCreation)
{
UserRecordArgs args = new UserRecordArgs()
{
Uid = Guid.NewGuid().ToString(),
...
但是,当浏览器重定向到第 3 方 OAuth 时,UID 已经返回到身份验证 token 中,我想我已经错过了说出我希望 UID 的格式的机会。
let provider = new firebase.auth.OAuthProvider('microsoft.com');
...
return this.afAuth.auth
.signInWithPopup(provider)
.then((res) => {
this.ngZone.run(() => {
const userData = {
uid: res.user.uid,
...
我认为,如果在任何其他身份验证方法中都没有这种级别的控制,那么在一种情况下直接创建用户时拥有设置 UID 的特权的值(value)很小。
当我使用电子邮件/密码自己创建用户时获得的自由运行时,我所做的只是让自己心痛。
也许我遗漏了什么。
最佳答案
无法控制来自 Firebase 身份验证的 UID 的内容或格式。它生成唯一的字符串,它们需要按原样被接受。您可以确定它们在您的项目中是唯一的,并且可以安全地用作数据库中的主键。
关于firebase - 使用 Firebase 通过 OAuth2 创建登录名时指定 UserId 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62556801/