Google Drive Rest API для Android

1

Я разрабатываю приложение для компании, и мне нужно интегрировать его с 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 при создании для создания таких файлов, как создание файлов и запрос файлов.

Если кто-то может получить меня до создания пустого файла в корневой папке пользователей, то я, вероятно, возьму его оттуда, но я действительно могу использовать подталкивание в правильном направлении!

Теги:
rest
google-drive-sdk
google-drive-android-api

1 ответ

1

Предполагая, что вы говорите об 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, сотовый) трафик. См. Эпизоды, связанные с сетью здесь.

Удача

  • 0
    Привет Шон. Я скачал вашу демоверсию REST, и она отлично работает. Спасибо! Но что он не делает, так это перечисляет файлы, добавленные другим приложением, например, веб-интерфейсом. Я занимался исследованиями в течение нескольких дней, но не могу заставить приложение перечислить другие файлы, кроме тех, которые были сгенерированы тем же приложением. Можете ли вы сказать мне, как этого можно достичь в вашей демоверсии?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню