问题描述
我在登录 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 (将#修改为@)