在 Django 中,如果我们使用 google oauth 为什么没有在 User 模型中添加电子邮件地址?

问题描述

在我的 Django 应用程序中,我使用了 google oauth2 进行登录,因此当用户注册时,first_name、last_name 和 username 会自动添加User 模型中,并且可以通过管理面板查看。但是没有添加用户的电子邮件地址,为什么会这样? 用户使用 OAuth 注册时,我们是否可以将电子邮件地址添加User 模型中?

解决方法

默认情况下(如果您未指定 SCOPE),将请求配置文件范围,并根据是否启用 SOCIALACCOUNT_QUERY_EMAIL 选择电子邮件范围。见django-allauth

或者,您可以指定要使用的范围,如下所示:

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

有效范围包括:电子邮件、电话、地址、aq:name、aq:location。如果SOCIALACCOUNT_QUERY_EMAIL=True,默认是请求用户名和电子邮件地址。您可以通过设置 SOCIALACCOUNT_EMAIL_VERIFICATION=TrueSOCIALACCOUNT_EMAIL_REQUIRED=True 来请求并要求提供经过验证的电子邮件地址。


更新

对于 SOCIALACCOUNT_EMAIL_VERIFICATION,另见 configuration