[英]Google Drive PHP API returns deleted files
我正在嘗試使用服務在Amazon S3和Google Drive之間同步文件。
我創建了一個服務帳戶,並與其電子郵件共享了一個文件夾。 然后,利用我構建的自動化服務,創建了一些文件夾。
一切正常,直到我嘗試從Google雲端硬盤用戶界面刪除這些文件夾。 它們從UI中消失了,但是我的服務仍然像接收它們一樣接收它們。 這是我用來列出文件/文件夾的代碼:
private function retrieveAllGoogleDriveFiles($service) {
$result = array();
$pageToken = NULL;
do {
try {
$parameters = array();
if ($pageToken) {
$parameters['pageToken'] = $pageToken;
}
$parameters['q'] = "trashed=false";
$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;
}
這是我使用的授權機制:
$credentials = new Google_Auth_AssertionCredentials(
'1234567890-somehashvalueshere123123@developer.gserviceaccount.com',
array('https://www.googleapis.com/auth/drive'),
$private_key,
'notasecret',
'http://oauth.net/grant_type/jwt/1.0/bearer'
);
$googleClient = new Google_Client();
$googleClient->setAssertionCredentials($credentials);
if ($googleClient->getAuth()->isAccessTokenExpired()) {
$googleClient->getAuth()->refreshTokenWithAssertion();
}
$googleService = new Google_Service_Drive($googleClient);
$files_list = $this->retrieveAllGoogleDriveFiles($googleService);
用戶從Google雲端硬盤刪除文件/文件夾的情況對我來說是真實的,我應該將同步恢復到S3並從那里也刪除文件/文件夾。
提前致謝。
在多個用戶之間共享文件夾時,擁有者有權刪除文件夾,而不是其他用戶。
本質上,正在發生的是通過單擊“刪除”,用戶正在將其從驅動器中刪除(取消訂閱),而不是刪除文件夾。 這就是為什么它仍然出現在您的服務帳戶文件列表中的原因。
一種可能的解決方案是更改所有者,以便非服務帳戶擁有該文件。 在這種情況下,刪除實際上是一種垃圾/刪除操作。 但是,如果不了解您的用例/要解決的基本問題,就很難完成解決方案。 如果用戶是企業/工作帳戶而不是私人/個人帳戶,則其中某些操作可能會更容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.