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 (将#修改为@)