BadHeaderError("Значения заголовка не могут содержать новые строки (получено %r)" % value) в drf_social_oauth2

Опишите ошибку

Я получил access_token от google, который я должен использовать для аутентификации пользователей. Все работает нормально, когда пользователь проходит аутентификацию в первый раз. Но когда пользователь выходит из системы и пытается войти снова, он выдает вот такую ошибку.

Этого никогда не происходило, когда я использовал старый gapi для входа в систему. Сейчас я использую новый рекомендованный GSI, предоставленный google.

Воспроизвести

Шаги для воспроизведения поведения:

  1. Зайдите на Google playground для получения маркера доступа
  2. Отправьте данные в конечную точку /auth/convert-token и убедитесь, что пользователь зарегистрирован в базе данных.
  3. Попробуйте отправить те же учетные данные в ту же конечную точку. NB: не имеет значения, новый ли это access_token. если он принадлежит тому же пользователю, ответом будет ошибка.

Ожидаемое поведение

Ответ с JSON данными токенов, сгенерированных бэкендом

Скриншоты

Скриншот ошибки в клиенте vscode thunder.

  • Версия Django: 4.0.1
  • drf-social-oauth2: 1.2.1
  • Система Google Auth: Новые службы идентификации Google

Дополнительный контекст

Раньше я работал со старой системой gapi.$Auth.

Похоже, что проблема возникает в классе ConvertTokenView в site-packages/drf_social_oauth2.py. Когда пользователь регистрируется в первый раз, вот такие заголовки:

dict_items([('Content-Type', 'application/json'), ('Cache-Control', 'no-store'), ('Pragma', 'no-cache')])

когда тот же пользователь пытается получить доступ к конечной точке convert-token, добавляется заголовок PS1 (который содержит badHeader) вместе с другими заголовками. Ниже приведен полный список заголовков:

Вернуться на верх