allauth do django o facebook redireciona para a inscrição quando o email recuperado corresponde ao email de um usuário existente?
Consigo logar com sucesso via Google e Facebook usando Django (1.6.4) e allauth (0.16.1) e Python (2.7) com redirecionamento esperado para as configurações.LOGIN_REDIRECT_URL no caso de não existir um usuário com emailid recuperado fornecedor. No entanto, quando já existe um usuário com o mesmo emailid que o recuperado do provedor (fb ou goolge), ele sempre redireciona para / accounts / social / signup / #= página de inscrição perguntando:
Você está prestes a usar sua conta do Facebook / Google para fazer login em example.com. Como etapa final, preencha o seguinte formulário: O email é preenchido automaticamente.
Eu testei comSOCIALACCOUNT_AUTO_SIGNUP = True
ouFalse
, mas sem efeito. Tentei alterar o auth_type para o facebook, mas não vejo outras opções além de "rerequest"
Eu tenho o seguinte settings.py:
ACCOUNT_AUTHENTICATION_METHOD = "email" # Defaults to username_email
ACCOUNT_USERNAME_REQUIRED = False # Defaults to True
ACCOUNT_EMAIL_REQUIRED = True # Defaults to False
SOCIALACCOUNT_QUERY_EMAIL = ACCOUNT_EMAIL_REQUIRED
SOCIALACCOUNT_AUTO_SIGNUP = True
SOCIALACCOUNT_EMAIL_REQUIRED = False
ACCOUNT_ADAPTER = "myproject.adapter.MyLoginAccountAdapter"
LOGIN_URL = "/"
LOGIN_REDIRECT_URL = "/users/{id}/mytags"
Como posso parar esse redirecionamento para inscrição e fazer com que o login do provedor seja redirecionado para LOGIN_REDIRECT_URL, em particular de um usuário já existente com o mesmo emailid?
NOTA: Isso eu tentei
Eu já atualizei get_login_redirect_url em myproject.adapter.MyLoginAccountAdapter. Funciona apenas para o Google, mas não para o Facebook, conforme reivindicado porDjango allauth - definir redirecionamento do facebookEu tentei "Ignorar formulário de inscrição usando allauth"mas não funcionaATUALIZAÇÕES:
Graças a istoresponda, Percebi que o login via facebook será redirecionado para a página de inscrição em um caso: quando o email recuperado do perfil do facebook corresponder ao emailid do usuário já existente.Atualizei a pergunta para dar conta do caso acima.Para resumir o problema, este é um caso em que várias contas de provedor têm o mesmo ID de e-mail e o django-allauth não permite o login de forma intercambiável (por exemplo, se eu me registrei uma vez usando o facebook, o django-allauth exigirá que eu use apenas o facebook e não o google ou qualquer outro provedor com o mesmo ID de email)Eu o resolvi usando@receiver(pre_social_login)
eraise ImmediateHttpResponse
(veja minha resposta) com links úteis:esta eesteObrigado, Amit