Использование токена аутентификации, полученного из API версии 1, в запросе API версии 2.

Поскольку я не смог найти, как пройти аутентификацию с помощью V2 API с моими учетными данными Box, я попытался использовать токен аутентификации из V1 API с запросом V2.

Я обнаружил что-то странное, и я хотел бы знать, если что-то не так.

Документация заголовка для аутентификации запроса V2 описывает это для команды curl следующим образом: curl -k -L https://api.box.com/2.0/files/5053864602/content -H "Авторизация: носитель AUTH_TOKEN"

С curl я ничего не смог получить, даже сообщения об ошибке. Однако я попробовал этот запрос с Postman и в ответе увидел, что токен недействителен.

На этом форуме я обнаружил, что заголовок может иметь другую форму, включая api_key, поэтому я попробовал следующее: curl -k -L https://api.box.com/2.0/files/5053864602/content -H "Авторизация: BoxAuth api_key=API_KEY&auth_token=AUTH_TOKEN"

и этот запрос работает, так как я могу получить содержимое файла, например, с помощью вызова API V1.

Может ли кто-нибудь из BOX объяснить, что происходит? Подозреваю, что не только у меня такая проблема...


person user1466502    schedule 15.12.2012    source источник
comment
Я вижу, что документация по API изменилась. 4-5 дней назад заголовок Authorization содержал как authToken, так и APIkey. Возможно техническое изменение по сравнению с BOX. Придется ждать ответа от разработчиков BOX.   -  person user-457786    schedule 15.12.2012


Ответы (1)


Box API теперь поддерживает OAuth 2, который имеет полностью переработанный процесс аутентификации. Инструкции по использованию OAuth 2.0 с Box можно найти здесь: http://developers.box.com/oauth/

Аутентификация в стиле V1 по-прежнему поддерживается в V2 API, хотя в конечном итоге она будет признана устаревшей. Тем не менее, если вы сейчас начинаете использовать Box API, вам следует использовать OAuth 2, чтобы избежать двойной работы и переноса в будущем.

Существует несколько различий между аутентификацией в стиле V1 и OAuth 2.0, но особенно в OAuth 2.0 вам не нужно подписывать запросы API с помощью вашего ключа API (который теперь называется «идентификатором клиента» в OAuth 2.0), только access_token, который вы пройти процесс авторизации.

Вы можете прочитать больше о нашей реализации OAuth 2 по моей предыдущей ссылке, а также о спецификации в целом здесь.

person seanrose    schedule 15.12.2012
comment
Шон, вы говорите, что теперь мы должны внедрить OAuth2, если мы хотим использовать V2 API, или теперь это вариант? - person tufelkinder; 16.12.2012
comment
И аутентификация V1, и OAuth 2 пока будут работать с API V2, хотя мы планируем прекратить поддержку аутентификации V1 в API V2 в конечном итоге (не раньше, чем через несколько месяцев). Когда V1 API полностью устареет примерно через год, аутентификация в стиле V1 также устареет вместе с ним. OAuth 2 гораздо более безопасен и стандартизирован, поэтому мы, очевидно, призываем людей использовать его как можно скорее. - person seanrose; 16.12.2012
comment
Я спросил, потому что запросы, которые работали нормально, теперь сообщают о неправильном токене аутентификации без каких-либо изменений в моем коде и для новых пользователей, прошедших проверку подлинности. - person tufelkinder; 16.12.2012
comment
Хм, это странно. Мы пока не слышали, чтобы это происходило с кем-либо еще. Некоторые из наших официальных клиентов, такие как наше приложение для iOS, используют аутентификацию V1 и не сталкивались с чем-либо подобным. Если вы все еще сталкиваетесь с этой проблемой, возможно, стоит опубликовать здесь то, с чем вы столкнулись, чтобы мы могли помочь устранить неполадки. - person seanrose; 16.12.2012
comment
У меня была (кажется) похожая проблема. Замена «boxauth» заголовками авторизации «bearer» или «boxapi» приведет к ошибке 400: «malformed_auth_header» как для стандартных, так и для общих запросов. - person John Hoerr; 16.12.2012
comment
Да, вы не можете просто использовать старый токен аутентификации v1 в качестве токена на предъявителя. В нашей системе они не взаимозаменяемы. Если вы используете токен аутентификации v1, вам придется продолжать передавать его как токен аутентификации, а также включать ключ API в свой запрос. - person Peter; 17.12.2012