使用django allauth用户可以使用Facebook注册我的网站。他们需要完成注册过程,在我的系统上创建一个帐户。
登录后,用户需要能够断开与Facebook的连接但仍然是我网站的成员。
目前我有一个视图,可以手动从数据库中删除社交帐户,但是我注意到如果您尝试再次添加社交帐户的问题,则必须再次注册,这是不可能的(因为帐户存在)。要再次添加社交帐户,我只是使用:
{% load socialaccount %}
<a href="{% provider_login_url "facebook" method="oauth2" %}">Facebook OAuth2</a>
我阅读the docs并在支持的流程中提及:
断开社交帐户
但是我无法找到更多信息,并且urls.py中没有“删除”网址
我怀疑与尝试连接帐户时登录的用户有关,因为我在注销时尝试重新关联我的FB帐户(使用相同的{%socialaccount%}链接)它工作正常(无需额外注册)
我的问题是删除社交帐户的推荐方法是什么?
答案 0 :(得分:4)
Django-allauth带有一个处理断开社交帐户的视图(allauth.socialaccount.views.ConnectionsView
)。您可以直接使用它,或只是看它是如何工作的,并做自己的版本。逻辑在allauth.socialaccount.forms.DisconnectForm
:
from allauth.socialaccount import signals
def save(self):
account = self.cleaned_data['account']
account.delete()
signals.social_account_removed.send(sender=SocialAccount,
request=self.request,
socialaccount=account)
要向现有帐户添加社交帐户,您需要将process="connect"
与provider_login_url
一起使用(用户需要在点击时登录您的网站)。因此,请将您的链接更改为:
<a href="{% provider_login_url "facebook" process="connect" method="oauth2" %}">Facebook OAuth2</a>