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

In Django if we use google oauth why the email address are not added in the User model?

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

默认情况下(如果您未指定 SCOPE),会请求配置文件范围,并可选择电子邮件范围,具体取决于是否启用 SOCIALACCOUNT_QUERY_EMAIL。参见 django-allauth

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

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

有效范围包括:电子邮件、phone、地址、aq:name、aq:location。如果 SOCIALACCOUNT_QUERY_EMAIL=True,则默认请求用户名和电子邮件地址。您可以通过设置 SOCIALACCOUNT_EMAIL_VERIFICATION=TrueSOCIALACCOUNT_EMAIL_REQUIRED=True.

来请求并要求一个经过验证的电子邮件地址

更新

另见 configuration SOCIALACCOUNT_EMAIL_VERIFICATION