Django allauth 推荐的删除社交帐户的方法

sid*_*rcy 2 django facebook django-allauth

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

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

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

{% load socialaccount %}
<a href="{% provider_login_url "facebook" method="oauth2" %}">Facebook OAuth2</a>
Run Code Online (Sandbox Code Playgroud)

我阅读了文档,它在支持的流程中提到:

断开社交帐户

但是我找不到更多信息,并且 urls.py 中没有“删除”URL

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

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

Kev*_*nry 5

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)
Run Code Online (Sandbox Code Playgroud)

要将社交帐户添加到现有帐户,您需要使用process="connect"with provider_login_url(并且用户点击它时需要登录到您的网站)。因此,将您的链接更改为:

<a href="{% provider_login_url "facebook" process="connect" method="oauth2" %}">Facebook OAuth2</a>
Run Code Online (Sandbox Code Playgroud)