在我的网站(www.raptors.ru)上,我使用社交软件-auth django授权来自Facebook的用户。为了简化他们的日志记录,我做了以下设置:
ACCOUNT_PASSWORD_INPUT_RENDER_VALUE = True这样用户就不需要输入他们的密码。当FB用户第一次登录时,将在表users中创建一个记录。重要的是,这个用户在我的站点上没有密码。然而,这个用户功能齐全:他可以发布帖子、发表评论等等。如果用户想要与他的社交账户断开连接,问题就开始了。首先,如果一个人试图通过LoginCancelledView断开他的帐户(直接链接是https://raptors.ru/accounts/social/login/cancelled/ ),他会收到一条消息,他成功地断开了连接,但这不是事实,因为他的用户名仍然在页面头上(见截图)。

第二种断开连接的方法是从连接页面(https://raptors.ru/accounts/social/connections/)。

但是,如果用户单击Remove按钮,Django就不会这样做,并报告如下错误:您的帐户没有设置密码。

请告诉我,从我的网站上断开(或完全删除) Facebook用户的正确和工作方式是什么?FB坚持认为我应该提供这个选项。
发布于 2022-06-22 07:34:19
有一个注销(django.contrib.auth)方法可用于此,例如在我的views.py中:
from django.contrib.auth import logout
from django.shortcuts import redirect
...
def logout_request(request)
logout(request)
return redirect('/')在我的urls.py中,要触发这个方法:
urlpatterns =[
...,
path('logout', views.logout_request, name="logout),
]这对我来说很管用
发布于 2022-06-20 12:26:36
Allauth提供了一个设置现有用户密码的视图,该密码可用于向以前只有社交登录的用户添加密码。来自文献资料
经过身份验证的用户可以使用
allauth.account.views.PasswordSetView和allauth.account.views.PasswordChangeView视图管理他们的密码帐户,分别在/ account / password /set/account/password/change/ (URL nameaccount_set_password和account_change_password)。 根据用户是否设置了密码(user.has_usable_password()),用户在这些视图之间被重定向。通常情况下,当用户通过社交提供商注册时,他们将没有密码设置。
因此,您可以做的是首先让用户设置一个密码(通过转到/accounts/ password / set /),然后断开社交帐户。
https://stackoverflow.com/questions/70926049
复制相似问题