Генерировать токен доступа, используя пользовательский экземпляр (не username, password и grant_type) - PullRequest
0 голосов
/ 27 марта 2020

Я использую Django REST Framework и использую эту библиотеку для обеспечения аутентификации на основе токенов для приложений внешнего интерфейса.

Существует реализация входа в Google с использованием плагина django-allauth.

Я хочу сгенерировать токен доступа при входе пользователя в систему с помощью учетной записи в социальной сети.

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

class GoogleLoginView(LoginView):
    """
    Enable login using google
    """
    adapter_class = GoogleOAuth2Adapter
    serializer_class = CustomSocialLoginSerializer

    def login(self):
        self.user = self.serializer.validated_data['user']
        self.token = TokenView().create_token_response(self.request)
        return self.token

    def post(self, request, *args, **kwargs):
        self.request = request
        self.serializer = self.get_serializer(
            data=self.request.data,
            context={'request': request}
        )
        self.serializer.is_valid(raise_exception=True)

        url, header, body, status_ = self.login()
        return Response(json.loads(body), status=status_)

данные запроса имеют user экземпляр вместе с client_id и client_secret приложения.

Но это дает ошибку

'{"error": "unsupported_grant_type"}'

Версия
django -oauth-инструментарий == 1.3.0

...