如何使用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
相关产品推荐
相关产品推荐

