django - 通过社交网站注册时如何跳过 django-allauth 提供的用户注册表单?

标签 django django-allauth

最近,我遇到了一些不寻常的事情。当我尝试通过 Linked In 注册我的 django 网站时,它立即让我登录并将我重定向到我设置的任何登录重定向 URL。但现在,当我最终在 AWS 上部署我的网站时,django-allauth 将我带到此用户注册页面,在注册前询问用户名。我想跳过这个并使用电子邮件而不是“用户名”。以下是来自 settings.py 的 django 所有身份验证特定设置:
ACCOUNT_AUTHENTICATION_METHOD = "电子邮件" ACCOUNT_EMAIL_REQUIRED = True ACCOUNT_EMAIL_VERIFICATION = "无" ACCOUNT_LOGOUT_REDIRECT_URL =“/用户/” ACCOUNT_SIGNUP_PASSWORD_VERIFICATION = True ACCOUNT_UNIQUE_EMAIL = True
此外,我还尝试设置 SOCIALACCOUNT_AUTO_SIGNUP = True

最佳答案

是的,我似乎忽略了他们的文档,或者也许他们最近更新了它,问题是我正在使用“注册流程”来登录已经注册的用户,因此 allauth 用于呈现此注册表单。您可以通过编写以下内容来避免这种情况:
<a href="{% provider_login_url "facebook" process="login" method="oauth2" %}"> login with facebook </a>
您的注册链接将如下所示:
<a href="{% provider_login_url "facebook" method="oauth2" %}"> sign up with facebook </a>
要将多个帐户连接到同一电子邮件,您需要定义一个适配器,如下所示:

class SocialLoginAdapter(DefaultSocialAccountAdapter):
    def pre_social_login(self, request, sociallogin):
        # This is tested and should work
        try:
            user = User.objects.get(email=sociallogin.account.user.email)
            sociallogin.connect(request, user)
            # Create a response object
            response = HttpResponse()
            raise ImmediateHttpResponse(response)
        except Exception:
            pass

并在你的settings.py中提及这一点
SOCIALACCOUNT_ADAPTER = 'path_to_your_adapter_module.SocialLoginAdapter'
这就是我最终的 settings.py 的样子(allauth 部分)

ACCOUNT_AUTHENTICATION_METHOD = "email"
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_EMAIL_VERIFICATION = "none"  #later change to mandatory
ACCOUNT_SIGNUP_PASSWORD_VERIFICATION = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
SOCIALACCOUNT_EMAIL_REQUIRED = True
SOCIALACCOUNT_AUTO_SIGNUP = True
# custom adapter to override login behavior and associate different social profiles with same email,with same user
SOCIALACCOUNT_ADAPTER = 'path_to_your_adapter_module.SocialLoginAdapter'

关于django - 通过社交网站注册时如何跳过 django-allauth 提供的用户注册表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29588720/

相关文章:

python - Django 迁移 : Not reflecting changes | creates only id

python - 比 locals() 或 dict(foo=foo) 更好的东西用于将上下文导出到模板引擎

python - Django allauth 社交注册后重定向到电子邮件验证

django - 仅在 IE9 上使用 django 表单提交的 HTTP 403

python - Django 刷新 token 轮换和用户页面刷新

django - 使用 allauth 绕过注册表单

Django-allauth 设置

Django 显示密码复选框

javascript - Django下拉[onChange]框包含选定的值但无法获取选定的值

django - 浏览器阻止跨域 iframe cookie