Я использую простой JWT для пользователей, зарегистрированных через страницу, и настраиваю полезную нагрузку токена , как указано здесь . Я также использую OAuth2 с social_ django с google-oauth2.
После входа в систему OAuth2 я получаю ответ от моего сервера
access: "ey...",
refresh: "ey...",
user: "user@gmail.com"
Я хотел бы расширить полезную нагрузку токена доступа, чтобы после декодирования я получил больше информации. В настоящее время у меня есть полезная нагрузка:
{
"token_type": "access",
"exp": number,
"jti": "string",
"user_id": 3
}
Пользователь, входящий в систему через Google, получает другую полезную нагрузку, чем пользователь, вошедший в систему со своей учетной записью, созданной с помощью Django регистрации (из-за настройки, которую я сделал для simpleJWT).
Вопрос: Есть ли способ заставить social_ django использовать простой JWT или настроить полезную нагрузку токена моего сервера?
Я пытался использовать AUTHENTICATION_BACKENDS и расширять классы BaseOAuth и GoogleOAuth
class CustomBaseOAuth(BaseOAuth2):
def extra_data(self, user, uid, response, details=None, *args, **kwargs):
"""Return access_token, token_type, and extra defined names to store in
extra_data field"""
data = super(BaseOAuth2, self).extra_data(user, uid, response,
details=details,
*args, **kwargs)
data['uuid'] = str(user.unique_id.hex)
return data
, и он работает, но расширенная информация застревает в поле базы данных, поэтому я все еще застрял, потому что я хочу, чтобы эта информация была возвращена в полезной нагрузке токена.
Спасибо за любые подсказки.