你能告诉我这个谷歌驱动器API调用函数在PHP中有什么问题
问题描述:
我有这段代码运行并从我的驱动器中获取图像。但是,每次运行此代码时,我都会遇到问题。你能告诉我这个谷歌驱动器API调用函数在PHP中有什么问题
function listF() {
$result = array();
$tok = array();
$nextPageToken = NULL;
do {
try {
$parameters = array();
if ($nextPageToken) {
$parameters['pageToken'] = $nextPageToken;
$parameters['q'] = "mimeType='image/jpeg' or mimeType='image/png'";
}
$files = $this->service->files->listFiles($parameters);
$tok[] = $nextPageToken;
$result = array_merge($tok, $result, $files->getFiles());
$nextPageToken = $files->getNextPageToken();
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
$nextPageToken = NULL;
}
} while ($nextPageToken);
return $result;
}
我得到这个错误:
An error occurred: {
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid Value",
"locationType": "parameter",
"location": "pageToken"
}
],
"code": 400,
"message": "Invalid Value"
}
}
它并没有真正似乎变得不合法我。也许你可能会发现错误。谢谢
答
我会用Javascript回答你的nextPageToken
问题,只要注意逻辑。 我有两个相同的listFile()函数。一个在初始加载时执行,加载页面后,它显示我的100个文件中的前10个。每次点击一个按钮时,另一个执行。
第一个功能显示inital 10文件。
//take note of this variable
var nextToken ;
function listFiles() {
gapi.client.drive.files.list({
'pageSize': 10,
'fields': "*"
}).then(function(response) {
//assign the nextPageToken to a variable to be used later
nextToken = response.result.nextPageToken;
// do whatever you like here, like display first 10 files in web page
// . . .
});
}
二级功能: 这个功能是通过一个名为“下一页”按钮,从11显示后续文件N的点击触发
function gotoNextPage(event) {
gapi.client.drive.files.list({
'pageSize': 10,
'fields': "*",
'pageToken': nextToken
}).then(function(response) {
//assign new nextPageToken to make sure new files are displayed
nextToken = response.result.nextPageToken;
//display batch of file results in the web page
//. . .
});
}
答
看来,nextPageToken这个会被裁定为无效,除非在初始请求中包含的后续请求中包含完全相同的查询字段(q)。
var files = []
var nextToken;
gapi.client.drive.files.list({
'q': "mimeType='image/jpeg' or mimeType='image/png'",
'pageSize': 10,
'fields': 'nextPageToken, files(id, name)'
}).then(function(response) {
nextToken = response.result.nextPageToken;
files.push(...response.result.files)
while (nextToken) {
gapi.client.drive.files.list({
'nextPage': nextToken,
'q': "mimeType='image/jpeg' or mimeType='image/png'",
'pageSize': 10,
'fields': 'nextPageToken, files(id, name)'
}).then(function(response) {
nextToken = response.result.nextPageToken;
files.push(...response.result.files)
})
}
});
'“location”:“pageToken”' - 听起来像'pageToken'是带有无效值的参数。你有没有检查相应的变量包含...? – CBroe
在你的代码中,你正在定义'$ nextPageToken = NULL;'。因此,你的条件'if($ nextPageToken)'从来没有工作。您收到的错误也是如此,即提供的pageToken值无效。 –
@Chinmayjain它故意为null,所以它不会进入if语句,因为不会有任何nextPageToken,直到“$ nextPageToken = $ files-> getNextPageToken();”持久性有机污染物。 – chandlerbing