微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django 在 oauth 回调后执行操作

如何解决Django 在 oauth 回调后执行操作

我有一个项目,我想让用户可以选择使用他们的 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/

我想我可以更改此 URL,但随后我收到错误回调的错误消息。

现在我确定这是一个简单的问题,但我想不通,我想也许有一些回调处理程序,但我找不到实现类似事情的资源。

解决方法

抱歉,我无法评论声望低于 50 的 bc,但我会在您回复后立即将其删除。我必须提出一些问题才能提供帮助,

  • 您是否在主 urls.py 中安装并包含了 django-social(或您使用的任何 oauth 库)?
  • LOGIN_REDIRECT_URL 应该是您在用户登录后重定向用户的路由,因此通常是主路由或类似的路由。这是你的意图吗?
  • checkouauth 功能非常好,但您几乎可以在任何地方运行它,您不一定需要为此提供路线。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。