如何使用Drive SDK列出域中的所有Google文档?

时间:2015-04-07 03:41:25

标签: java google-app-engine google-drive-api

我想列出谷歌域名中的所有文件。我在谷歌文档中尝试过提及: https://developers.google.com/drive/v2/reference/files/list#examples

我创建的服务如下:

 HttpTransport httpTransport = new NetHttpTransport();
  JacksonFactory jsonFactory = new JacksonFactory();
  GoogleCredential credential = new GoogleCredential.Builder()
      .setTransport(httpTransport)
      .setJsonFactory(jsonFactory)
      .setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
      .setServiceAccountScopes(Arrays.asList(DriveScopes.DRIVE))
      .setServiceAccountUser(userEmail)
      .setServiceAccountPrivateKeyFromP12File(
          new java.io.File(SERVICE_ACCOUNT_PKCS12_FILE_PATH))
      .build();
  Drive service = new Drive.Builder(httpTransport, jsonFactory, null)
      .setHttpRequestInitializer(credential).build();

  Files.List request = service.files().list();

当我按如下方式执行此请求时:

 FileList files = request.execute();

我只获得了'userEmail'(在创建服务时提供)文件。

我如何获得所有域名谷歌驱动器文件?我使用超级管理员,但我无法得到。

2 个答案:

答案 0 :(得分:6)

要获取Google Apps域中的所有文件,您需要:

  1. 使用您的服务帐户和应用设置domain-wide delegation of authority
  2. 使用目录API users.list() API调用来确定Google Apps域中的所有用户。
  3. 作为每个用户,请致电files.list(q='"me" in owners')以获取用户拥有的所有文件的列表。
  4. 所有这些调用的综合结果将是您的Google Apps域中的所有文件。

答案 1 :(得分:1)

你不能:)因为Google Drive文件所有权逻辑是以用户为中心的。

您只能列出用户调用API的“我的云端硬盘”中的文件。