我尝试使用Google Drive API从Google云端硬盘帐户中获取所有文件的列表。一定有问题,因为即使我更改了结果的nextPageToken的服务pageToken,我仍然在每次调用时获得相同的100个第一个文件。花了很多时间来处理它,但我对错误是什么没有更多的想法。有人可以帮忙吗?
public static void main(String[] args) throws IOException {
//Global variable of a Drive service getting started
service = getDriveService();
//Creating the Filelist with the execution of the service
FileList result = service.files().list()
.setFields("nextPageToken, files(id, name, permissions)")
.execute();
//Variable to know how many results we've got
int count = 0;
List<File> files = null;
System.out.println("Files:");
while (result.getNextPageToken() != null)
{
files = result.getFiles();
for (File file : files) {
System.out.println("File name: "+file.getName()+
"\nFile id: "+file.getId()+
"\nPermissions: "+file.getPermissions()+
"\nRevisions: ");
count++;
}
result = getNextFiles(result);
}
if (files == null || files.size() == 0) {
System.out.println("No more files found.");
}
System.out.println(count);
}
private static FileList getNextFiles (FileList result)
{
try {
//Changing the pageToken from the service to execute and get next results
service.files().list().setPageToken(result.getNextPageToken());
return service.files().list().execute();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
使用两个system.out修改最后一个方法,以查看pageToken输出,如下所示:
private static FileList getNextFiles (FileList result)
{
try {
//Changing the pageToken from the service to execute and get next results
System.out.println("Actual token: "+service.files().list().getPageToken());
service.files().list().setPageToken(result.getNextPageToken());
System.out.println("Supposed next page token: "+result.getNextPageToken());
System.out.println("After adding the page token to the service: "+service.files().list().getPageToken());
return service.files().list().execute();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
结果是,不知道为什么服务没有获取页面令牌,甚至设置它,而下一页令牌仍为空:
实际令牌:null
假设下一页令牌:V1 * 3 | 0 | ChwwQjlxU0xvMmJJS05ZWlhNNFUzSXlXVUkwTWpREgcQlKeu5r8r
将页面标记添加到服务后:null
实际令牌:null
假设下一页令牌:V1 * 3 | 0 | ChwwQjlxU0xvMmJJS05ZWlhNNFUzSXlXVUkwTWpREgcQlKeu5r8r
将页面标记添加到服务后:null