谷歌驱动器JS API nextpageToken无效

ale*_*ela 1 javascript api google-drive-api

我只是按照 API 文档并使用 JS API 进行了简单查询,并收到错误 400: Invalid Value of the nextPageToken

gapi.load('client', function(){
    gapi.client.load('drive', 'v3', function(){
        gapi.client.init({}
        ).then(function(){
            gapi.client.drive.files.list({
                'q'         : "name contains 'nv'",
                'pageSize'  : 10,
                'fields'    : "nextPageToken, files(id, name, webContentLink, folderColorRgb, thumbnailLink, description)",
                'orderBy'   : 'modifiedTime desc',
            }).then(function(respo){
                var token = respo.result.nextPageToken;
                gapi.client.drive.files.list({
                    'fields' : '*',
                    'pageToken' : token
                }).then(function(result){console.log(result.result);})
            })
        })
    })
}) 
Run Code Online (Sandbox Code Playgroud)

从第一个查询返回的令牌没问题,已满。但在下一个查询中,它就变得错误了。

没有找到令牌的格式,所以我无法检查它是否正确?!

ps 测试了开发人员控制台,获取令牌并在下一个查询中得到相同的错误。

Gia*_* Vu 5

我发现后续页面请求必须具有与第一个请求相同的“q”值,以避免出现 HTTP 400 错误。例如,如果第一个请求是:

   gapi.client.drive.files.list({
       'q'         : "name contains 'nv'",
       'pageSize'  : 10,
       'fields'    : "nextPageToken, files(id, name)"
   }).then(function(respo){
       ...
   }
Run Code Online (Sandbox Code Playgroud)

后续请求也必须具有相同的“q”:

   gapi.client.drive.files.list({
       'q'         : "name contains 'nv'",
       'pageToken' : nextPageToken,
       'pageSize'  : 10,
       'fields'    : "nextPageToken, files(id, name)"
   }).then(function(respo){
       ...
   }
Run Code Online (Sandbox Code Playgroud)

确保始终检查 nextPageToken 的有效性,因为在后续请求中提供空值将重新启动列表操作。

  • 很好的答案。该文档没有提到需要使用相同的参数重复查询。人们可能认为传入令牌足以执行下一页的结果,但是,不,整个参数列表*必须*相同。 (2认同)