通过Google Drive API调用获得相同的100个文件

时间:2017-05-15 09:56:04

标签: google-drive-api

我尝试使用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

0 个答案:

没有答案