列出来自Google驱动器的所有共享驱动器

问题描述

我正在尝试使用列出驱动器java方法列出googledrive中的所有共享驱动器。 这是我的代码

public static void getDriveId(String folderName,String oauthToken) throws Exception {
            DriveList list ;
            String pagetoken = null;
            GoogleCredential credential = new GoogleCredential(); 
            credential.setAccesstoken(oauthToken);
            try {
                _driveService = new Drive.Builder(GoogleNetHttpTransport.newTrustedTransport(),JacksonFactory.getDefaultInstance(),credential).setApplicationName(appName).build();
            } catch (GeneralSecurityException e) {
                // Todo Auto-generated catch block
                e.printstacktrace();
            } catch (IOException e) {
                // Todo Auto-generated catch block
                e.printstacktrace();
            }
            list = _driveService.drives().list().setQ(folderName).setFields("nextPagetoken,drives(id,name)")
                 .execute();
        System.out.println(list.toString());
        }

我在文件夹名=“ salesDrive”的查询中设置Q参数

它给我类似的错误

原因:com.google.api.client.googleapis.json.GoogleJsonResponseException:400错误的请求 {

  "code" : 400,"errors" : [ {
    "domain" : "global","location" : "q","locationType" : "parameter","message" : "Invalid Value","reason" : "invalid"
  } ],"message" : "Invalid Value"
}

如何设置此q参数以仅显示特定的共享驱动器详细信息?

解决方法

您缺少两件事:

  1. 仅提供foldername是不够的,您应该指定name = 'foldername'(请记住,它应该是共享驱动器的名称,而不是此驱动器中包含的文件夹)
  2. documentation中所述:

要搜索一组特定的共享驱动器,请将useDomainAdminAccess参数设置为true

如果遗漏了上述任何一个步骤,则会导致出现400错误,就像您收到的一样。