问题描述
我有一个项目,我想让用户可以选择使用他们的 Google/Facebook 帐户来注册/登录。
此外,每当新用户注册时,就会创建另一个模型(帐户)并与该用户建立联系。所有这些工作正常,但现在我遇到了问题。
当用户使用 Continue with Google 注册时,他们应该被重定向到我将使用刚刚创建的用户创建帐户的视图(可能不是最好的方法,但我找不到任何示例为了更好的)
现在出现问题了:
如果用户表中已经存在该电子邮件,则该用户不会被转移到重定向 URL,我将在那里执行检查,如果该电子邮件的帐户存在,我将在登录/注册页面上显示警告,而是他们被重定向到 allauth 的 ...accounts/social/signup/
url
这就是我所拥有的:
settings.py
LOGIN_REDIRECT_URL = "/account_user/checkouath/"
views.py
def checkouath(request):
user = request.user
oauthUser = SocialAccount.objects.get(user=user)
# Actions to create new Account and check if User exists are going to be here
return redirect(reverse("homepage"))
这是我在 Google 上设置的重定向:http://127.0.0.1:8000/accounts/google/login/callback/
现在我确定这是一个简单的问题,但我想不通,我想也许有一些回调处理程序,但我找不到实现类似事情的资源。
解决方法
抱歉,我无法评论声望低于 50 的 bc,但我会在您回复后立即将其删除。我必须提出一些问题才能提供帮助,
- 您是否在主 urls.py 中安装并包含了
django-social
(或您使用的任何 oauth 库)? - LOGIN_REDIRECT_URL 应该是您在用户登录后重定向用户的路由,因此通常是主路由或类似的路由。这是你的意图吗?
- checkouauth 功能非常好,但您几乎可以在任何地方运行它,您不一定需要为此提供路线。