Как загрузить файл в Dropbox с генерацией токена с помощью Dropbox Core SDK for Java?
Имеется Windows-приложение на Java, использующее официальный Dropbox Core SDK (недавно обновлён до версии 4.0.1). Его цель - загрузка пользовательских файлов в облако в целях создания резервных копий. Ранее всё работало путём получения long-lived access token (перманентного ключа доступа) через консоль приложения. После этого аутентификация происходила следующим образом:
import com.dropbox.core.DbxException;
import com.dropbox.core.DbxRequestConfig;
import com.dropbox.core.v2.DbxClientV2;
public class Main {
private static final String ACCESS_TOKEN = "<ACCESS TOKEN>";
public static void main(String args[]) throws DbxException {
// Create Dropbox client
DbxRequestConfig config = DbxRequestConfig.newBuilder("dropbox/javaFileCopy").build();
DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN);
}
}
С сентября 2021 года консоль Dropbox не выдаёт перманентные токены, из-за чего каждые 3-4 часа приходится "ручным образом" получать новый, что неприемлемо - в силу архитектурных особенностей, токен должен быть непосредственно встроен в код приложения. Также исчезла возможность получить перманентный токен через API.
С связи с этим вопрос - как следует модифицировать код выше для динамического получения временного токена перед загрузкой очередного файла? Загрузка с помощью "готового клиента" происходит следующим образом (file - объект загружаемого файла, inputStream2 - его потоковое представление):
client.files().uploadBuilder("/" + file.getName()).uploadAndFinish(inputStream2);
В целях достижения требуемого функционала и с учётом специфики использования допустимо встроить в код следующие данные: логин и пароль пользователя напрямую, App key, App secret или любую другую информацию, ассоциированную с аккаунтом разработчика. Возможно, следует создать некий refresh token, т.к. приложение работает в так называемом offline-режиме.