微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django Allauth - Facebook 登录不会产生电子邮件

如何解决Django Allauth - Facebook 登录不会产生电子邮件

我在登录 django-allauth facebook 时遇到问题。

我已成功配置了 facebook 登录,并且我能够向 facebook 发送请求并将用户的信息返回到我的控制台以创建要登录用户

但是,我在此过程中遇到了一个不寻常的问题。当我打印从 facebook API 获得的结果以检查结果时,我设法得到一个字典,其中包含“first_name”、“last_name”和“name”,其中填充了 facebook 用户的信息,但字段“email”和“username”携带值 None。

这是有问题的,因为用户无法继续创建帐户,而是显示一个 allauth 认 html 页面,其中包含一个用于输入电子邮件/用户名的表单。我想完全跳过这个页面,如果我有电子邮件,我可以。

我得到的字典是来自 allauth/socialaccount/adapter.py 函数 populate_user(populate_user(self,request,sociallogin,data) 的“数据”。也许我应该在不同的步骤有电子邮件?>

我的设置是这样设置的:

LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = '/'
logoUT_URL = 'logout'
logoUT_REDIRECT_URL = 'login'

SOCIAL_AUTH_RAISE_EXCEPTIONS = False

ACCOUNT_EMAIL_required = True
ACCOUNT_USERNAME_REQURIED = True

ACCOUNT_AUTHENTICATION_METHOD = "email" # Defaults to username_email
SOCIALACCOUNT_QUERY_EMAIL = ACCOUNT_EMAIL_required
SOCIALACCOUNT_AUTO_SIGNUP = True
SOCIALACCOUNT_EMAIL_required = True
ACCOUNT_DEFAULT_HTTP_PROTOCOL='https'
ACCOUNT_ADAPTER = "TheRodeoProject.adapter.MyLoginAccountAdapter"
SOCIALACCOUNT_ADAPTER = 'TheRodeoProject.adapter.MySocialAccountAdapter'
LOGIN_REDIRECT_URL = "/Contests/"

SOCIALACCOUNT_PROVIDERS = {
    'facebook': {
        'METHOD': 'oauth2','ScopE': ['email','public_profile'],'AUTH_ParaMS': {'auth_type': 'reauthenticate'},'INIT_ParaMS': {'cookie': True},'FIELDS': [
            'id','first_name','last_name','middle_name','name','name_format','picture','short_name'
        ],'EXCHANGE_TOKEN': True,'LOCALE_FUNC': 'path.to.callable','VERIFIED_EMAIL': False,'VERSION': 'v7.0',}

我的设置应用中包含以下所有内容

'social.apps.django_app.default','social_django','allauth','allauth.account','allauth.socialaccount','allauth.socialaccount.providers.google','allauth.socialaccount.providers.facebook',

而且我也有这个身份验证后端:

AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend','allauth.account.auth_backends.AuthenticationBackend',]

有人知道如何解决这个问题吗?

非常感谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。