谷歌驱动器SDK:从驱动器返回的文件空数组(Google Drive SDK: Empty arra

2019-10-17 10:33发布

我遇到一些麻烦驱动SDK。 我想从我的谷歌硬盘中的所有文件占了我的应用程序。 我觉得我做的一切,该驱动器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;

} 

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

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

任何帮助或建议,不胜感激。

Answer 1:

在你的代码提供给您正在访问的服务帐户本身的谷歌驱动器,而不是特定用户的谷歌驱动器上的域。 这是可能的服务帐户的谷歌驱动器是空的,所以得到的文件空数组是预期的结果。

如果你想在你的域名访问特定用户的谷歌驱动器,并遵照文件,说明如何管理局建立谷歌Apps域范围内的授权你缺少一个行:

$auth->prn = $userEmail;

这是你设置FO你试图冒充域的用户的电子邮件。 然后,你将访问该用户的谷歌驱动数据。



文章来源: Google Drive SDK: Empty array of files returned from Drive