firebase - 使用 Firebase 通过 OAuth2 创建登录名时指定 UserId 格式

标签 firebase firebase-authentication

也许 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/

相关文章:

ios - Firebase 商店 : trying to store to local file gives an error

安卓火力地堡 : Phone Authentication Custom Country Code

android - 检测登录用户的 Firebase Auth Provider

java - Firebase 电话身份验证

android - 文件 google-services.json 丢失。没有它,Google 服务插件将无法运行。 (对于 firebase ml 套件)

html - 三个网页可以在 Firebase (Firebase Hosting) 的同一个元素中吗?

firebase-authentication - google.auth.GoogleAuth() 需要什么 keyFile key ?

android - 使用 Firebase BaaS 通过 Android 登录 Facebook

java - Android 应用程序上的 Firebase 用户登录调用登录失败

node.js - 在哪里可以找到 NodeJS Firebase Admin SDK 的所有错误返回代码?