2012-11-21 55 views
1

我在Drive SDK中遇到了一些問題。我試圖將我的Google雲端硬盤帳戶中的所有文件存入我的應用中。我感覺我正在做Drive Drive文檔告訴我要做的所有事情,但每次我抓取文件時,都會返回一個空數組,並且沒有錯誤。我將SDK用作服務帳戶,因此設置有點不同。順便說一句,我的網站正在運行drupal。這裏是我的代碼:Google Drive SDK:從驅動器返回的空文件陣列

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

您似乎在使用服務帳戶。因此,這意味着您正在訪問SERVICE_ACCOUNT_EMAIL中指定的服務帳戶的Google雲端硬盤。該服務帳戶的Google雲端硬盤很可能是空的,這就是爲什麼你會得到空的結果。你之前是否添加過任何文件?您確定要訪問服務帳戶的Google雲端硬盤,還是想要訪問特定用戶的Google雲端硬盤? – Nivco

回答

0

在您提供的代碼中,您訪問的是服務帳戶本身的Google雲端硬盤,而不是您域中特定用戶的Google雲端硬盤。服務帳戶的Google雲端硬盤可能是空的,因此獲得空的文件陣列是預期的結果。

如果你想在你的域名訪問特定用戶的谷歌驅動器,並遵照documentation explaining how to setup Google Apps domain-wide delegation of Authority你缺少一個行:

$auth->prn = $userEmail; 

這是你設置的電子郵件FO的用戶您試圖模仿的域名。然後,您將訪問該用戶的Google雲端硬盤數據。

+0

http://stackoverflow.com/questions/13389309/google-drive-api-domain-wide-delegation-of-authority-php-instantiate-a-drive-s –

+0

謝謝你,雖然,帶領我在正確的道路上! –

+0

感謝您的鏈接!我將更改PHP文檔以使用 - > prn :) – Nivco

相關問題