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

Django Rest Auth集成Google登录:邮箱与用户名未存储问题

问题排查与解决方案

你基于AbstractUser扩展用户模型,通过Django Rest Auth实现Google登录时,出现Google账号的邮箱、用户名未存入数据库的问题,可从以下几个方向排查解决:

1. 检查Google OAuth2权限范围配置

必须请求email和profile权限才能获取用户的邮箱、用户名信息,在settings.py中配置:

SOCIALACCOUNT_PROVIDERS = {
    'google': {
        'SCOPE': [
            'profile',
            'email',
        ],
        'AUTH_PARAMS': {
            'access_type': 'online',
        }
    }
}

2. 确认自定义User模型的全局配置

确保settings.py中指定了你的自定义User模型,否则Django会用内置User模型,导致数据存入错误表:

AUTH_USER_MODEL = 'users.User'  # 替换为你的app名称.User

3. 修复Social Account用户创建逻辑

Django Rest Auth依赖django-allauth,若默认适配器未正确从Google返回数据中填充字段,可自定义适配器重写save_user方法:

# 在你的app下创建adapter.py
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter

class SocialAccountAdapter(DefaultSocialAccountAdapter):
    def save_user(self, request, sociallogin, form=None):
        user = super().save_user(request, sociallogin, form)
        extra_data = sociallogin.account.extra_data
        # 从Google返回的额外数据中提取并赋值
        user.email = extra_data.get('email')
        # 可根据需求生成用户名,比如用邮箱前缀或姓名组合
        user.username = extra_data.get('email').split('@')[0]
        user.full_name = extra_data.get('name')
        user.save()
        return user

然后在settings.py中配置该适配器:

SOCIALACCOUNT_ADAPTER = 'users.adapter.SocialAccountAdapter'  # 替换为你的适配器路径

4. 验证Google返回的用户数据

调用Google用户信息接口https://www.googleapis.com/oauth2/v1/userinfo?access_token=你的Google令牌,确认返回数据中包含email、name等关键字段,若缺失需检查Google开发者控制台的OAuth2配置。

5. 检查自定义User模型的方法重写

如果你重写了create_user方法或有post_save信号,确保没有忽略email和username的赋值,比如:

class User(AbstractUser):
    # 你的自定义字段...
    def create_user(self, username, email=None, password=None, **extra_fields):
        if not email:
            raise ValueError('必须设置邮箱字段')
        email = self.normalize_email(email)
        user = self.model(username=username, email=email, **extra_fields)
        user.set_password(password)
        user.save(using=self._db)
        return user

内容的提问来源于stack exchange,提问作者Erick Echeverry García

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:38:27