Я разрабатываю приложение для компании, и мне нужно интегрировать его с Google Диском. Я не могу использовать собственный API, потому что у компании есть файлы, не созданные приложением, которое нужно обрабатывать, мне нужна полная область диска, поэтому REST API - это то, что я должен использовать.
Здесь проблема, учебные пособия недостаточно для меня, чтобы начать работу, поскольку у меня есть только основное понимание JSON и REST.
Учебник: https://developers.google.com/drive/web/integrate-create
Как я понимаю, мне нужно создать JSON в моем Java-коде, а затем передать это через код примера?
JSON
{
"action":"create",
"folderId":"0ADK06pfg",
"userId":"103354693083460731603"
}
JAVA
public class State {
/**
* Action intended by the state.
*/
public String action;
/**
* IDs of files on which to take action.
*/
public Collection<String> ids;
/**
* Parent ID related to the given action.
*/
public String parentId;
/**
* Empty constructor required by Gson.
*/
public State() {}
/**
* Create a new State given its JSON representation.
*
* @param json Serialized representation of a State.
*/
public State(String json) {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
State other = gson.fromJson(json, State.class);
this.action = other.action;
this.ids = other.ids;
this.parentId = other.parentId;
}
}
Проблема в том, что я понятия не имею, как создать JSON, и я не понимаю, как использовать JSON при создании для создания таких файлов, как создание файлов и запрос файлов.
Если кто-то может получить меня до создания пустого файла в корневой папке пользователей, то я, вероятно, возьму его оттуда, но я действительно могу использовать подталкивание в правильном направлении!
Предполагая, что вы говорите об Android-приложении, нет необходимости создавать JSON. Java REST Api довольно прост в использовании на Android. Если официальных документов и примеров недостаточно, вы можете посмотреть на demo. Это немного сложнее, чем нужно (чтобы поддерживать совместимость с GDAA версия), но с помощью нескольких простых шагов вы можете упростите его.
Я, конечно, не могу скопировать весь код здесь, но вы можете просто вырвать класс REST, предоставить учетную запись GooDrive для setSelectedAccountName() (или опустить метод и позволить службе обрабатывать его) и упростить методы connect()/disconnect(). Метод connect() (для совместимости с GDAA) должен быть заменен конструкцией try/catch следующим образом:
com.google.api.services.drive.Drive mGOOSvc;
...
try {
mGOOSvc...execute();
} catch (UserRecoverableAuthIOException uraIOEx) {
// standard authorization failure - user fixable
} catch (GoogleAuthIOException gaIOEx) {
// usually PackageName / SHA1 mismatch in DevConsole
} catch (IOException e) {
// '404 not found' in FILE scope, still, consider connected
if (e instanceof GoogleJsonResponseException) {
if (404 == ((GoogleJsonResponseException) e).getStatusCode())
mConnected = true;
}
} catch (Exception e) {
// "the name must not be empty" indicates
// UNREGISTERED / EMPTY account in 'setSelectedAccountName()' ???
}
везде, где вы найдете метод "... execute()" в классе REST, чтобы внезапно потерять авторизацию и т.д. (может произойти в любое время). В противном случае я выполнял эту реализацию CRUD в течение некоторого времени и никогда не испытывал проблем.
Одно общее примечание о REST Api. Поскольку он "зависит от сети", я бы рекомендовал полностью отключить его от вашего пользовательского интерфейса приложения и запустить его в некотором типе службы синхронизации, вызванном, когда есть активный сетевой (WIFI, сотовый) трафик. См. Эпизоды, связанные с сетью здесь.
Удача