BadHeaderError("Значения заголовка не могут содержать новые строки (получено %r)" % value) в drf_social_oauth2
Опишите ошибку
Я получил access_token от google, который я должен использовать для аутентификации пользователей. Все работает нормально, когда пользователь проходит аутентификацию в первый раз. Но когда пользователь выходит из системы и пытается войти снова, он выдает вот такую ошибку.
Этого никогда не происходило, когда я использовал старый gapi для входа в систему. Сейчас я использую новый рекомендованный GSI, предоставленный google.
Воспроизвести
Шаги для воспроизведения поведения:
- Зайдите на Google playground для получения маркера доступа
- Отправьте данные в конечную точку /auth/convert-token и убедитесь, что пользователь зарегистрирован в базе данных.
- Попробуйте отправить те же учетные данные в ту же конечную точку. 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) вместе с другими заголовками. Ниже приведен полный список заголовков: