我在使用Drive SDK时遇到了一些问题。我正在尝试将我的Google云端硬盘帐户中的所有文件存入我的应用。我觉得我正在做Drive SDK文档告诉我要做的所有事情,但每次去抓文件时,我都会返回一个空数组......并且没有错误。我使用SDK作为服务帐户,因此设置有点不同。顺便说一下,我的网站正在运行drupal。这是我的代码:
1)首先,我构建服务(这是一个名为buildService()
的函数的主体:
$key = PATH_TO_KEY_FILE;
if (file_exists($key)) {
try {
$auth = new Google_AssertionCredentials(
SERVICE_ACCOUNT_EMAIL,
array(DRIVE_SCOPE),
$key);
$client = new Google_Client();
$client->setUseObjects(true);
$client->setAssertionCredentials($auth);
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
return new Google_DriveService($client);
}
else{
return "can't find key file';
}
这个块完全没问题,我从Google_DriveService获取了一个对象
2)另一方面,我抓住服务对象,并尝试列出驱动器文件:
$parameters = array();
$service = buildService(); //my function from step 1
$files = retrieveAllFiles($service, $parameters);
3)以下是retrieveAllFiles
函数(直接来自SDK文档):
function retrieveAllFiles($service, $parameters) {
$result = array();
$pageToken = NULL;
do {
try {
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$files = $service->files->listFiles($parameters);
$result = array_merge($result, $files->getItems());
$pageToken = $files->getNextPageToken();
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
$pageToken = NULL;
}
} while ($pageToken);
return $result;
}
正如我所说,我得到一个空的结果,没有错误,没有。
关于为什么我的结果是空的任何想法?
非常感谢任何帮助或建议。
答案 0 :(得分:0)
在您提供的代码中,您正在访问服务帐户本身的Google云端硬盘,而不是您域中特定用户的Google云端硬盘。服务帐户的Google云端硬盘很可能是空的,因此获得一个空数组文件就是预期的结果。
如果您尝试访问域中特定用户的Google云端硬盘,并且已按照documentation explaining how to setup Google Apps domain-wide delegation of Authority错过了一行:
$auth->prn = $userEmail;
您可以在此处设置您尝试模拟的域用户的电子邮件。然后,您将访问该用户的Google云端硬盘数据。