1

我在使用 Drive SDK 时遇到了一些问题。我正在尝试将我的 Google Drive 帐户中的所有文件导入我的应用程序。我觉得我正在做 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;

} 

正如我所说,我得到了一个空结果,没有错误,什么都没有。

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

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

4

1 回答 1

0

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

如果您尝试访问您域中特定用户的 Google 云端硬盘并按照说明如何设置 Google Apps 域范围内的授权委托的文档进行操作,则您缺少一行:

$auth->prn = $userEmail;

这是您为您尝试模拟的域的用户设置电子邮件的地方。然后,您将访问该用户的 Google Drive 数据。

于 2012-11-21T01:12:42.037 回答