【问题标题】:Is it possible to shorten firebase auth UIDs?是否可以缩短 Firebase 身份验证 UID?
【发布时间】:2022-01-18 01:52:26
【问题描述】:
我已经开始设计一个推荐系统,并希望使用 Firebase 身份验证 UID 作为每个用户的推荐代码,但是它们比我想要的要长,并且也不能保证保持较小。我研究了一些用于短文本压缩、散列等的库;但似乎没有一个能满足我的需求。我最近在 npm 上遇到了可爱的short-uuid pkg,但不幸的是,它似乎不适用于 firebase UID(因为它们不是 UUID),但我一直在寻找不涉及保留的可能解决方案自定义 ID 到 UID 的查找表。
所以真正的问题是:有什么好的方法可以通过编程压缩一个短字符串然后解压缩?
【问题讨论】:
标签:
firebase
firebase-authentication
uuid
【解决方案1】:
您无法控制 Firebase 身份验证在其各种提供程序中生成的 UID。
如果您想使用更短/更友好的方案来识别您的用户,一些选项是:
- 您可以自己生成较短的 ID,并维护这些 ID 到 Firebase 生成的 ID 的映射。您通常需要对较短的 ID 进行唯一性检查,因为较短的字符串发生冲突的可能性会迅速增加。
- 为用户提供更友好标识符的一个常见示例是允许用户选择唯一的用户名。这本质上是第一个选项的变体,但现在具有用户选择的 ID。在这里,您也需要执行检查以防止重复。
- 您也可以creating a custom provider 插入 Firebase 身份验证。执行此操作时,您也可以控制 Firebase 使用的 UID。在此您有责任确保您的提供者生成的 UID 不仅在您自己的提供者中是唯一的,而且在您为项目启用的所有提供者中都是唯一的。
【解决方案2】:
正如@FrankVanPuffelen 解释的那样,您无法控制 Firebase 身份验证自动生成的 UID。
但是使用Admin SDK 的createUser() 方法,您可以定义要分配给新用户的UID。如文档中所述,“如果您想为新用户指定自己的 UID,您可以将其作为参数包含在传递给用户创建方法的参数中”
await admin.auth().createUser(
{
uid: 'some-uid',
email: 'user@example.com',
password: '....',
}
);
您可以在Cloud Function 或您拥有的服务器上运行此代码。
当然,您需要确保用户的 UID 对于每个用户都是唯一的。