Django allauth社交登录后重定向

5
我想在社交注册后重定向到特定链接,我该如何实现?我可以为常规注册做到这一点,但无法为社交注册做到这一点。
2个回答

3

或者,您可以编写自己的自定义社交账户适配器来处理不同社交账户的登录重定向,并且不会干扰您的正常账户设置,操作步骤如下:

# adapter.py    
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter

class SocialAccountAdapter(DefaultSocialAccountAdapter):
    def get_login_redirect_url(self, request):
        # do your logic here for different social accounts
        ...
        return 'url/to/your/redirection' # or reverse(view) or whatever

# settings.py
SOCIALACCOUNT_ADAPTER = "point.to.adaptor.SocialAccountAdapter"

编辑:

如果您想更改新注册用户的重定向,您可以自定义适配器的 save_user 方法:

class SocialAccountAdapter(DefaultSocialAccountAdapter):
    ...
    def save_user(self, request, sociallogin, form=None):
        super(DefaultSocialAccountAdapter, self).save_user(request, sociallogin, form=form)
        # your logic here... and return redirection afterward
        return redirect(...)

但这样会在登录后也将其重定向到该链接,对吧?我希望它仅在注册后重定向,以便用户可以完成他的个人资料(即在注册时不是必填的字段)。 - Ebtessam Zoheir
@EbtessamZoheir,我已根据您的要求编辑了我的答案。请检查是否有效(我还没有测试)。 - Anzel

2

在社交登录和普通登录后,应该根据设置中的LOGIN_REDIRECT_URL进行重定向。您是否已经设置了这个?

关于自定义重定向,这里也有一些很好的信息here


但这样会在登录后也将其重定向到此链接,对吧?我希望它仅在注册后重定向,以便用户可以完成他的个人资料(在注册时不需要填写的字段)。 - Ebtessam Zoheir
是的,你有把你的LOGIN_REDIRECT_URL设置成那个网址吗?/accounts/profile/或者你的编辑资料页面? - awwester

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接