我只是遵循API文档并使用JS API进行简单查询并获得错误400: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);})
})
})
})
})
从第一个查询返回的令牌是好的,让它充满。但在下一个查询中它会出错。
没有找到令牌的格式,所以我无法检查它是否好或?!
附:测试开发人员控制台,获取令牌并在下一个查询中获得相同的错误。
我发现后续页面请求必须与第一个请求具有相同的“q”值,以避免出现HTTP 400错误。例如,如果第一个请求是:
gapi.client.drive.files.list({
'q' : "name contains 'nv'",
'pageSize' : 10,
'fields' : "nextPageToken, files(id, name)"
}).then(function(respo){
...
}
后续请求也必须具有相同的'q':
gapi.client.drive.files.list({
'q' : "name contains 'nv'",
'pageToken' : nextPageToken,
'pageSize' : 10,
'fields' : "nextPageToken, files(id, name)"
}).then(function(respo){
...
}
确保始终检查nextPageToken的有效性,因为在后续请求中提供空值将重新重新启动列表操作。
这是我在Google Drive JavaScript操作中尝试进行分页时发现的最佳结果。他们应该只是在他们的文档上展示一个例子,但我找不到它。然而,Facebook有这样的例子。无论如何,要在他们的框架中进行分页:
//Global variable to hold token pointer
var NextPageToken = '';
function GetFiles() {
gapi.client.drive.files.list({
'pageSize': 25,
'q': "mimeType contains 'image/'",
'fields': "nextPageToken, files(id, name)"
}).then(function (response) {
var files = response.result.files;
// if response.result.nextPageToken exists, use it
if (response.result.nextPageToken) {
NextPageToken = response.result.nextPageToken;
} else {
NextPageToken = false;
}
});
}
function GetNextSetOfImages() {
gapi.client.drive.files.list({
'pageSize': 25,
'q': "mimeType contains 'image/'",
'pageToken': NextPageToken,
'fields': "nextPageToken, files(id, name)"
}).then(function (response) {
var files = response.result.files;
// if response.result.nextPageToken exists, use it
if (response.result.nextPageToken) {
NextPageToken = response.result.nextPageToken;
} else {
NextPageToken = false;
}
});
}
我根本不相信这个!!!
谷歌做出了如此愚蠢的事情。
问题是它需要在下一个查询中写入而不是pageToken,而是nextPageToken并且它正在工作。
检查几次,确实如此。
在文档中,它写错了,也在他们的控制台中。
耻辱!