簡體   English   中英

Android上的Google Drive Rest API

[英]Google Drive Rest API on Android

我正在為一家公司開發應用程序,需要將其與Google雲端硬盤集成。 我不能使用本機API,因為該公司擁有的文件不是由應用程序創建的,需要處理,我需要完整的驅動器范圍,因此我必須使用REST API。

這就是問題所在,因為我對JSON和REST僅有非常基本的了解,因此教程對我來說還不夠基礎。

教程: https//developers.google.com/drive/web/integrate-create

據我了解,我需要在Java代碼中創建JSON,然后將其傳遞給示例代碼?

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上非常易於使用。 如果官方文檔和示例不足夠,您可以查看此演示 (為了保持與GDAA 版本的兼容性),它需要稍微復雜一些,但是通過一些簡單的步驟,您可以簡化它。

我當然不能在這里復制所有代碼,但是您可以搶奪REST類 ,為setSelectedAccountName()提供一個GooDrive帳戶(或省略該方法,讓服務來處理它)並簡化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()' ???
}

您可以在REST類中找到“ ... execute()”方法的任何位置,以便捕獲突然丟失的授權等信息(可能隨時發生)。 否則,我已經運行了該CRUD實現一段時間,從未遇到過問題。

關於REST Api的一般說明。 由於它是“取決於網絡狀態”的,因此我建議將其與應用程序的UI完全斷開連接,並在存在活動的網絡(WIFI,蜂窩)流量時以某種類型的同步服務運行它。 此處查看與網絡相關的劇集。

祝好運

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM