Лучший способ получить пользовательскую папку, используя как пользователя в новом Box Java SDK
В примере с Box простой способ получить корневую папку пользователя с помощью кода ниже
http://opensource.box.com/box-java-sdk/
BoxAPIConnection api = new BoxAPIConnection("your-developer-token");
BoxFolder rootFolder = BoxFolder.getRootFolder(api);
for (BoxItem.Info itemInfo : rootFolder) {
System.out.format("[%d] %s\n", itemInfo.getID(), itemInfo.getName());
}
Но если мне нужно получить доступ к чужой информации с помощью As-user, я не могу использовать классы BOX SDK (BoxFolder, BoxFile, BoxUser...) и мне нужно получать данные только из JSON напрямую, как показано ниже. Если я это сделаю, я теряю последние функции, добавленные в новом SDK. Это лучший способ? Как насчет производительности? Есть ли альтернативный способ?
url= new URL("https://api.box.com/2.0/folders/0");
BoxAPIRequest request = new BoxAPIRequest(api,url,"GET");
request.addHeader("As-User", "12345678");
BoxJSONResponse response = (BoxJSONResponse) request.send();
JsonObject responseJSON = JsonObject.readFrom(response.getJSON());
Позже получите свойства папки, используя JsonObject / JsonArray. Если мне нужны элементы папки, мне нужно зациклить JsonArray, как показано ниже
JsonArray entries = responseJSON.get("entries").asArray();
for (JsonValue entry : entries)
{ ....}
1 ответ
К сожалению, новая бета-версия Java SDK пока не имеет встроенной поддержки функциональности "как пользователь", что делает этот вид хитрым. Одним из обходных путей является использование RequestInterceptor
с вашим BoxAPIConnection
вручную добавить заголовок "Как пользователь" к каждому запросу.
api.setRequestInterceptor(new RequestInterceptor() {
@Override
public BoxAPIResponse onRequest(BoxAPIRequest request) {
request.addHeader("As-User", "user-id");
// Returning null means the request will be sent along with our new header.
return null;
}
}
Это должно позволить вам использовать остальную часть SDK в обычном режиме и не беспокоиться о выполнении запросов API вручную. Я также создал проблему для добавления поддержки "как пользователь".