Django allauth建议删除社交帐户的方法

时间:2014-03-05 10:05:36

标签: django facebook django-allauth

使用django allauth用户可以使用Facebook注册我的网站。他们需要完成注册过程,在我的系统上创建一个帐户。

登录后,用户需要能够断开与Facebook的连接但仍然是我网站的成员。

目前我有一个视图,可以手动从数据库中删除社交帐户,但是我注意到如果您尝试再次添加社交帐户的问题,则必须再次注册,这是不可能的(因为帐户存在)。要再次添加社交帐户,我只是使用:

{% load socialaccount %}
<a href="{% provider_login_url "facebook" method="oauth2" %}">Facebook OAuth2</a>

我阅读the docs并在支持的流程中提及:

  

断开社交帐户

但是我无法找到更多信息,并且urls.py中没有“删除”网址

我怀疑与尝试连接帐户时登录的用户有关,因为我在注销时尝试重新关联我的FB帐户(使用相同的{%socialaccount%}链接)它工作正常(无需额外注册)

我的问题是删除社交帐户的推荐方法是什么?

1 个答案:

答案 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>
相关问题