box-java-sdk-v2 Токен OAuth в сценарии веб-сервера

Я просматривал Java SDK для Box по адресу https://github.com/box/box-java-sdk-v2

Я видел образец фрагмента

String url = "https://www.box.com/api/oauth2/authorize?response_type=code&client_id=" +    key + "&redirect_uri=http%3A//localhost%3A" + PORT;
try {
        Desktop.getDesktop().browse(java.net.URI.create(url));
        code = getCode();
        System.out.println("code: " + code);
    } catch (IOException e) {
        e.printStackTrace();
}

«код» используется для создания «BoxOAuthToken».

Это отлично работает!

Мой вопрос: «код» должен генерироваться для каждого запроса. Это включает в себя запуск браузера и аутентификацию пользователя в Box. Но что, если я хочу запустить это на веб-сервере и открыть веб-службу? Я хотел бы, чтобы пользователи аутентифицировались из своего браузера и позволяли веб-серверу вызывать

BoxFolder boxFolder= client.getFoldersManager().getFolder("0",null);
ArrayList<BoxTypedObject> folderEntries = boxFolder.getItemCollection().getEntries();

и вернуть результаты клиенту/пользователям в формате JSON.

Любые идеи о том, как этого можно достичь?

На данный момент мой веб-сервер напрямую вызывает API (например, api.box.com/2.0/folders/0) с использованием Apache Commons HTTP и передает токен с заголовком «Авторизация», и это работает. Но мне было интересно, могу ли я использовать SDK.


person user3646378    schedule 25.08.2014    source источник


Ответы (1)


Вам не нужно выполнять рукопожатие OAuth для каждого запроса. Функция getCode привязывается к сокету, чтобы получить обратный вызов от Box, который имитирует традиционное рукопожатие.

Вы можете просто изменить свой код на следующий:

1) Используйте все, что вы делаете, чтобы получить токен авторизации. Этот процесс также должен дать вам токен обновления
2) установить свой BoxClient с идентификатором клиента, секретом клиента, авторизацией и обновлением.
3) Выполните вызов, как вы видите здесь.

Несколько замечаний:
1) Токен доступа действителен в течение 60 минут. После этого вам потребуется использовать токен обновления для создания нового токена доступа. Токен обновления действителен в течение 60 дней. Когда вы получите новый токен доступа, вы получите новый токен обновления.

person Michael Cizmar    schedule 02.09.2014
comment
Спасибо, Майкл! Я попробую это. - person user3646378; 05.09.2014