You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Firebase用户UID作为主键创建Django自定义用户

Firebase返回的UID为字母数字组合的自定义格式字符串,不符合RFC 4122规定的UUID标准格式,无法直接转换为Python的UUID对象,因此你当前使用UUIDField作为主键的方案无法直接适配Firebase UID,可按以下步骤调整实现:

实现步骤

1. 修改CustomUser模型的主键字段

把原来的UUIDField替换为CharField,适配Firebase UID的字符串格式:

import uuid
from django.contrib.auth.models import AbstractUser
from django.db import models

class CustomUser(AbstractUser):
    # 替换原UUIDField,直接存储Firebase返回的UID字符串
    id = models.CharField(
        primary_key=True,
        max_length=128, # 预留足够长度,Firebase官方说明UID最长不超过36位
        editable=False,
        verbose_name="用户唯一标识"
    )
    # 若存在非Firebase渠道创建用户的场景,可添加默认值自动生成无分隔符的UUID字符串
    # default=lambda: uuid.uuid4().hex

2. 调整用户创建逻辑

不需要再做UUID格式转换,直接传入Firebase校验通过后的UID字符串即可:

# firebase_uid为校验Firebase凭证后提取到的合法UID字符串
CustomUser.objects.create(
    id=firebase_uid, 
    username="mikhail",
    email="email@example.com",
    # 其他需要赋值的用户字段
)

注意:所有从Firebase获取的UID都需要先完成Firebase凭证合法性校验,避免伪造请求传入非法UID创建用户。

内容的提问来源于stack exchange,提问作者Mikhail Trunov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 22:39:04