Google Drive SDK API未列出Google Drive在Google中上传的文件

我正在创建一个可以将文件插入Google云端硬盘并列出的应用程序。 我使用的是Google Drive SDK v2 API。 但我的问题是它没有列出未通过我的应用程序上传的文件。 如果我直接从Google云端硬盘上传,则不会在我的应用中列出。

以下是列出文件的方法:

private static List retrieveAllFiles(Drive service) throws IOException { List result = new ArrayList(); Files.List request = service.files().list(); do { try { FileList files = request.execute(); result.addAll(files.getItems()); request.setPageToken(files.getNextPageToken()); } catch (IOException e) { System.out.println("An error occurred: " + e); request.setPageToken(null); } } while (request.getPageToken() != null && request.getPageToken().length() > 0); return result; } 

我正在迭代这样的文件:

 List files = retrieveAllFiles(service); for(File f : files) { System.out.println("File Name : "+f.getOriginalFilename(); } 

有人可以帮我吗? 提前致谢 …

我认为您使用的是错误的oauth范围,可能是https://www.googleapis.com/auth/drive.file ,它限制了您的应用访问由您的应用创建或打开的文件,当您应该使用https://www.googleapis.com/auth/drive可以完全控制您的应用。

我构建了我们都在寻找的function。 以下列出了google驱动器文件夹中的所有文件和文件夹。 您可以指定是否需要目录中的所有文件,或者仅指定服务在目录中拥有的文件。 只需要ID的天气,或者只需要文件名或者两者都需要的天气。

Library_GoogleDriveFileList:

 import numpy import pprint from apiclient import errors import collections def Main( Service = None, FolderId = None, ResultFileNamesOnly = False, ResultFileIdsOnly = True, IncludeServiceFilesOnly = False, SortResults = False, ResultFormat = None, ): Result = None if (ResultFormat is None): ResultFormat = 'list' if (FolderId == None): FolderId = 'root' SearchParameterString = "'" + FolderId + "' in parents" SearchOwners = None if (IncludeServiceFilesOnly): SearchOwners = 'DEFAULT' else: SearchOwners = 'DOMAIN' print 'SearchOwners', SearchOwners #Because there is a return limit of 460 files (falsly documented as 1000) # we need to loop through and grab a few at a time with different requests DriveFileItems = [] PageToken = None while True: try: print 'PageToken', PageToken DriveFilesObject = Service.files().list( q = SearchParameterString, corpus = SearchOwners, #'DOMAIN' maxResults = 200, pageToken = PageToken, ).execute() DriveFileItems.extend(DriveFilesObject['items']) PageToken = DriveFilesObject.get('nextPageToken') if not PageToken: break except errors.HttpError, error: print 'An error occurred: %s' % error break #print 'DriveFileItems', DriveFileItems #pprint.pprint(DriveFileItems) FileNames = [] FileIds = [] for Item in DriveFileItems: FileName = Item["title"] FileNames.append(FileName) FileId = Item["id"] FileIds.append(FileId) #print 'FileIds' #pprint.pprint(FileIds) if ResultFileNamesOnly == False and ResultFileIdsOnly == False: if (ResultFormat == 'dict'): Result = collections.OrderedDict() for FileName , FileId in zip(FileNames, FileIds): Result [FileName] = FileId elif (ResultFormat == 'list'): Result = numpy.array([FileIds, FileNames]).T.tolist() elif ResultFileNamesOnly == True and ResultFileIdsOnly == False: Result = FileNames elif ResultFileNamesOnly == False and ResultFileIdsOnly == True: Result = FileIds elif ResultFileNamesOnly == True and ResultFileIdsOnly == True: raise Exception('ResultFileNamesOnly == True and ResultFileIdsOnly == True:') if ( ResultFormat == 'list'):#type(Result).__name__ == 'list'): Result = list( reversed( Result ) ) if (SortResults): Result = list( sorted( Result ) ) #TODO -> more intellegent sort for dict, 2d list return Result