簡體   English   中英

Google Drive API(PHP)無法列出文件

[英]Google Drive API (PHP) can't list files

我正在編寫一個應用程序以從Google雲端硬盤檢索文件(使用我自己的硬盤帳戶)。

我創建了一個Google服務帳戶來避免OAuth流程,因為我正在使用自己的Google雲端硬盤帳戶。

然后,我從Google取得了以下代碼示例:

function buildService() {

$SERVICE_ACCOUNT_EMAIL = 'xxxx@developer.gserviceaccount.com'; 
$SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'xxx-privatekey.p12';

  $key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH);
  $auth = new Google_AssertionCredentials(
      $SERVICE_ACCOUNT_EMAIL,
      array('https://www.googleapis.com/auth/drive'),
      $key);
  $client = new Google_Client();
  $client->setUseObjects(true);
  $client->setAssertionCredentials($auth);

  return new Google_DriveService($client);
}



function retrieveAllFiles($service) {

  $result = array();
  $pageToken = NULL;

  do {
    try {
      $parameters = array();
      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;
}


$service = buildService();

$allFiles = retrieveAllFiles($service);

print_r($allFiles);

當我有文件和文件夾時,它將返回一個空數組:

Array
(
)

在配置中,電子郵件和私鑰都可以,由Google自己提供; 我做錯了什么?

嘗試更改代碼,例如此處https://developers.google.com/drive/delegation

  function buildService($userEmail) {

   $SERVICE_ACCOUNT_EMAIL = 'xxxx@developer.gserviceaccount.com'; 
   $SERVICE_ACCOUNT_PKCS12_FILE_PATH = 'xxx-privatekey.p12';

   $key = file_get_contents($SERVICE_ACCOUNT_PKCS12_FILE_PATH);
   $auth = new Google_AssertionCredentials(
     $SERVICE_ACCOUNT_EMAIL,
     array('https://www.googleapis.com/auth/drive'),
     $key);
   $auth->sub = $userEmail;
   $client = new Google_Client();
   $client->setUseObjects(true);
   $client->setAssertionCredentials($auth);

   return new Google_DriveService($client);
 }

 //... function retrieveAllFiles($service) 

 $service = buildService("some@mail");
 $allFiles = retrieveAllFiles($service);
 print_r($allFiles);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM