我有一个自定义用户模型,并且正在使用django-allauth进行社交注册和登录。当用户使用已经使用电子邮件注册的社交帐户登录时,我试图将现有用户连接到新的社交帐户。我找到了此链接。
def pre_social_login(self, request, sociallogin):
user = sociallogin.account.user
if user.id:
return
try:
customer = Customer.objects.get(email=user.email)
except Customer.DoesNotExist:
pass
else:
perform_login(request, customer, 'none')
但是,当我尝试通过社交帐户登录时出现错误。
RelatedObjectDoesNotExist at /accounts/facebook/login/callback/
SocialAccount has no user.
任何帮助将不胜感激。
我也知道其中的安全性问题。但是我仍然想尝试一下。
我设法通过稍微更改适配器的代码来使其工作。
adapter.py
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
class MySocialAccountAdapter(DefaultSocialAccountAdapter):
def pre_social_login(self, request, sociallogin):
user = sociallogin.user
if user.id:
return
try:
customer = Customer.objects.get(email=user.email) # if user exists, connect the account to the existing account and login
sociallogin.state['process'] = 'connect'
perform_login(request, customer, 'none')
except Customer.DoesNotExist:
pass
如果是子类DefaultSocialAccountAdapter
,我们必须SOCIALACCOUNT_ADAPTER = 'myapp.my_adapter.MySocialAccountAdapter'
在settings.py
文件中指定
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句