Дубликат электронной почты для входа в систему третьей стороны Django

#django #authentication #gmail-api #google-developers-console

Вопрос:

Я настроил свое приложение django, чтобы иметь возможность входить в сторонние приложения Google и facebook. Однако всякий раз, когда у меня уже есть учетная запись, которая подписывается на уже существующую учетную запись gmail, я получаю странную страницу регистрации, которая выглядит следующим образом:

 Menu:
Sign In
Sign Up
Sign Up
You are about to use your Google account to login to example.com. As a final step, please complete the following form:

Username: 
testuser

An account already exists with this e-mail address. Please sign in to that account first, then connect your Google account.
E-mail (optional): 
email@test.com

Sign Up »

 

Есть ли способ исправить это, чтобы он мог запросить у пользователя другое электронное письмо вместо того, чтобы ломаться подобным образом? Если пользователь ранее не был зарегистрирован через приложение, эта проблема не возникает.

Ответ №1:

Простой. Создайте тестовую функцию, которая проверяет, существует ли пользователь (при попытке входа в систему) уже на основе электронной почты, имени пользователя или того, что у вас есть, и верните это сообщение пользователю.

например:

 def login(request):
    if request.method == 'POST':
        # perform some logic
        try:
            User.objects.filter(email=email).exists()
            return "User with email already exists"
        except User.objects.filter(email=email).DoesNotExist():
            return "User doesn't exist yet"