Когда я выполняю аутентификацию JWT через имя пользователя / пароль, это работает так:
from rest_framework_simplejwt.serializers import TokenObtainPairSerializer
'''post looks like: <QueryDict: {
'csrfmiddlewaretoken': ['Pd1mjNUXEdeiObEGOg8oNeqU18nwMVkSu8C29e0POGKwa2kY3yHiXk6hOEzuatMg'],
'email': ['tom@gmail.com'],
'password': ['xyxyzuzu'],
'evaluateUsername': ['Login']
}>'''
tokens = MyTokenObtainPairSerializer().validate(request.POST)
request.session["accessToken"] = tokens["access"]
request.session["refreshToken"] = tokens["refresh"]
Достаточно просто. Однако, если я использую Google Login, у меня нет доступа к электронной почте или паролю пользователя. Я могу легко получить письмо следующим образом:
if not request.POST.get('email'):
request.POST._mutable = True
request.POST['email'] = user.email
# request.POST['password'] = '********' # placeholder
request.POST._mutable = False
Но на django authenticate(user, password)
все равно не получится, поэтому я получаю следующую ошибку:
rest_framework.exceptions.ValidationError: [ErrorDetail (string = 'Не найдена активная учетная запись с данными учетными данными', code = 'invalid')]
Как бы мне обойти это, так как я действительно не знаю пароль пользователя, если он входит в систему с помощью Google Auth, и любой способ предоставления значения falsey приводит к ошибке?