Возникли проблемы при использовании TokenAuthentication в CoreAPI
Я строю API для приложения django, используя библиотеку rest_framework django. Все прошло отлично, и я могу получить доступ к своему API с помощью команд curl, как и ожидалось.
Теперь я хотел бы сделать вещи более элегантными в форме клиентской библиотеки с использованием CoreAPI.
Я могу сделать обычную аутентификацию следующим образом:
auth = coreapi.auth.BasicAuthentication(username=user, password=password)
client = coreapi.Client(auth=auth)
И я могу получить доступ к схеме API просто отлично.
Тем не менее, я хотел бы использовать мою аутентификацию токена (через rest_framework.tokenauthenticaiton) (которая прекрасно работает через curl) Я получаю сообщение об ошибке, мой код выглядит примерно так:
token = 'Token abc12345'
#tried the following:
#token = 'abc12345'
#token = 'Authorization: Token abc12345'
auth = coreapi.auth.TokenAuthentication(token=token)
client = coreapi.Client(auth=auth)
Пытаясь получить доступ к схеме, я получаю:
coreapi.exceptions.ErrorMessage: <Error: 401 UNAUTHORIZED>
detail: "Authentication credentials were not provided."
Документация показывает, что для TokenAuthentication в качестве аргументов требуются схема и токен, однако в примере показана TokenAuthentication с JWT, а не с djangos rest_framework.tokenauthentication.
Любой совет будет принят во внимание!
1 ответ
У меня просто были такие же проблемы. Исправление состояло в том, чтобы установить аргумент "схема =" токен "для coreapi.auth.TokenAuthentication. Итак, что-то вроде этого может работать для вас:
token = 'abc12345' # don't put the word 'Token' in front.
auth = coreapi.auth.TokenAuthentication(scheme='Token', token=token)
client = coreapi.Client(auth=auth)