Z powodzeniem mogę zalogować się przez Google i Facebooka za pomocą Django (1.6.4) i allauth (0.16.1) i Python (2.7) z oczekiwanym przekierowaniem do ustawień.LOGIN_REDIRECT_URL w przypadku, gdy nie ma istniejącego użytkownika z emailidem pobrany od dostawcy. Jednak, gdy istnieje już użytkownik o takim samym EMAILID jako jeden pobranej od dostawcy (fb lub goolge), to zawsze przekierowuje do/accounts/social/rejestracja/# = strona zarejestruj wywoławcza:django allauth facebook przekierowuje do rejestracji, gdy pobrany e-mail pasuje do adresu e-mail istniejącego użytkownika?
Jesteś o użyciu konta Facebook/Google do zalogowania się na example.com. Ostatnim krokiem jest : E-mail jest automatycznie wypełniany.
Testowałem z SOCIALACCOUNT_AUTO_SIGNUP = True
lub False
, ale bez efektu. Próbuję zmienić AUTH_TYPE na Facebooku, ale nie widzę żadnych innych niż opcje „rerequest”
Mam następujący 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 = "https://stackoverflow.com/users/{id}/mytags"
Jak mogę zatrzymać tego Przekierowanie do rejestracja, i mieć dostawca logowania przekierować do LOGIN_REDIRECT_URL w szczególności już istniejącego użytkownika z tym samym emailidem?
UWAGA: Próbowałem
- już aktualizowany get_login_redirect_url w myproject.adapter.MyLoginAccountAdapter. działa tylko na google, ale nie na facebooku jak twierdzą Django allauth - set facebook redirect
- Próbowałem "Bypass signup form using allauth" ale nie działa
aktualizacje:
- Dzięki tej answer, zdałem sobie sprawę, że logowanie przez facebook przekieruje do strony rejestracji w przypadku: gdy wiadomość e-mail pobrana z profilu na Facebooku pasuje do adresu e-mail istniejącego użytkownika.
- Mam zaktualizowane pytanie w celu uwzględnienia powyższej sprawy.
- Podsumowując, jest to przypadek, w którym wiele kont dostawców ma taki sam identyfikator e-mail, a django-allauth nie pozwala na zamiennie logowania (ei jeśli raz zarejestrowałem się przy użyciu Facebooka, django-allauth będzie wymagać ode mnie używania tylko Facebooka i nie google lub cokolwiek innego dostawcy z tym samym identyfikatorem e-mail)
- mam rozwiązać go za pomocą
@receiver(pre_social_login)
iraise ImmediateHttpResponse
(spójrz na moją odpowiedź) z przydatnych linków: this i thisone
Dzięki Amit
Chcesz unikalny adres e-mail użytkownika. ? Jeśli tak, to zachowanie jest czymś, co jest wymagane. – vibhor
Po prostu chcę możliwość wymienianego logowania za pomocą Facebooka i google z tym samym identyfikatorem e-mail. Zaktualizowałem pytanie. Znalazłem też odpowiedź. Proszę, spójrz na to. – abarik