Google Drive SDK:从Drive返回的空文件数组

时间:2012-11-21 00:20:45

标签: php drupal google-drive-api

我在使用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;

} 

正如我所说,我得到一个空的结果,没有错误,没有。

关于为什么我的结果是空的任何想法?

非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

在您提供的代码中,您正在访问服务帐户本身的Google云端硬盘,而不是您域中特定用户的Google云端硬盘。服务帐户的Google云端硬盘很可能是空的,因此获得一个空数组文件就是预期的结果。

如果您尝试访问域中特定用户的Google云端硬盘,并且已按照documentation explaining how to setup Google Apps domain-wide delegation of Authority错过了一行:

$auth->prn = $userEmail;

您可以在此处设置您尝试模拟的域用户的电子邮件。然后,您将访问该用户的Google云端硬盘数据。