Django在oauth回调后执行操作

Django在oauth回调后执行操作,django,django-models,oauth,django-allauth,Django,Django Models,Oauth,Django Allauth,我有一个项目,我想让用户能够选择使用他们的Google/Facebook帐户来注册 此外,每当新用户注册时,就会创建另一个模型(帐户)并与该用户连接。所有这些都很好,但现在我有一个问题 当使用Continue with Google的用户注册时,他们应该被重定向到我将与刚创建的用户创建帐户的视图(可能不是最好的方式,但我找不到更好的例子) 现在问题就出现在这里: 如果电子邮件已经存在于Users表中,则用户不会被转移到重定向url,我将在该url中执行检查,如果该电子邮件的帐户存在,我将在登录/

我有一个项目,我想让用户能够选择使用他们的Google/Facebook帐户来注册

此外,每当新用户注册时,就会创建另一个模型(帐户)并与该用户连接。所有这些都很好,但现在我有一个问题

当使用Continue with Google的用户注册时,他们应该被重定向到我将与刚创建的用户创建帐户的视图(可能不是最好的方式,但我找不到更好的例子)

现在问题就出现在这里:

如果电子邮件已经存在于Users表中,则用户不会被转移到重定向url,我将在该url中执行检查,如果该电子邮件的帐户存在,我将在登录/注册页面上显示警告,但他们会被重定向到allauth的
…accounts/social/signup/
url

这就是我所拥有的:

设置.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"))
这是我在谷歌上设置的重定向:
http://127.0.0.1:8000/accounts/google/login/callback/

我想我可以更改这个URL,但后来我得到一个错误的回调


现在我确定这是一个简单的问题,但我不明白,我想可能有一些回调处理程序,但我找不到实现类似的东西的资源。

很抱歉,我不能评论声誉低于50的bc,但我会在您回复后立即删除它。我有几件事需要你帮忙

  • 您是否已在main url.py中安装并包含了
    django social
    (或您正在使用的oauth库)
  • LOGIN_REDIRECT_URL应该是用户登录后重定向的路径,因此通常是主路径或类似的路径。那是你的意图吗
  • checkouauth函数非常好,但是您几乎可以在任何不需要路由的地方运行它

好的,所以我已经正确安装并添加了所有库,我发现如果用于登录的电子邮件帐户已经存在,那么用户将被重定向到allauth的自定义注册页面(我决定不使用它进行注册,而是模拟登录我的带额外消息的登录页面),因此,我刚刚为它创建了一个新模板,其中包含一条消息,说明此电子邮件的自定义帐户已存在,并尝试登录。我很确定这不是最好的方法,但这对我来说很有效,我已经测试了一点,效果很好。很好!听到这个消息我很高兴。我以前用我自己的几个应用程序做过,它非常方便是的,但我很确定这不是预期的方式lol它本身不是预期的方法,但这就是动态技术的魅力lol-你可以扩展它并定制到最重要的细节:)