Загрузка с Google Диска с учетной записью службы всегда возвращает 403 (квота хранилища) - PullRequest
0 голосов
/ 23 мая 2018

Я написал некоторую логику для загрузки файлов в папку Google Drive, которая является общей для учетной записи службы (uploader@uploadproject-204816.iam.gserviceaccount.com)

Сам Google Диск связан с моим GУчетная запись Suite.

Это работало некоторое время, но в итоге я начал получать эту ошибку:

Google.Apis.Requests.RequestError Превышена квота хранилища диска пользователя.[403] Ошибки [Сообщение [Превышена квота хранилища диска пользователя.] Местоположение [-] Причина [storageQuotaExceeded] Домен [global]]

С тех пор загрузка не работает, получая этоошибка даже при загрузке маленького файла.

Используя свою реальную учетную запись, я очистил все файлы, принадлежащие служебной учетной записи, даже те, которые были "неорганизованными".

Квота слеваговорит "170MB из 30GB используется"

Я также ждал более 24 часов.

Я думаю, что это касается самой учетной записи службы, а не диска.Но я не уверен, что проверять.

Я пытался проверить результаты метода About.Get(), не нашел ничего полезного.

var cred = new ServiceAccountCredential(new ServiceAccountCredential.Initializer(clientEmail)
{
            Scopes = (new[] { "https://www.googleapis.com/auth/drive" }).ToList()
}.FromPrivateKey(privateKey));

service = new DriveService(new Google.Apis.Services.BaseClientService.Initializer { ApiKey = apiKey, HttpClientInitializer = cred });
var about = service.About.Get();

РЕДАКТИРОВАТЬ:

Оказывается, мне нужно было сделать что-то еще, чтобы получить больше информации о квоте

var get = service.About.Get();
get.Fields = "*";
var about = get.Execute();

Тогда я могу видеть в about.StorageQuota

Limit: 16106127360
Usage: 16106125128

Так что, действительно, я понимаю хранилищеошибка квоты сейчас.Вопрос в том, как мне сбросить эти цифры?Все файлы, загруженные учетной записью службы, были удалены МОЕЙ учетной записью в том же месте.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

вы не можете удалить файл, созданный (принадлежащий) службой учетной записи, с вашей реальной учетной записью.

даже если вы это сделали, вы не увидите файлы на своей реальной учетной записи, но они все еще наслужебная учетная запись.

Вы должны удалить их с помощью учетной записи службы.

ниже сценария, поясняющего удаление файла с помощью PHP.для этого вам нужно знать идентификатор файлов, которые вы хотите удалить.поэтому мы делаем запрос, чтобы получить все идентификаторы файлов, содержащиеся в родительской папке, на которую ссылается 0B1-GGKdq5A3qX1dzNkhOLW1VWVU (на каждый файл и фоллер ссылается уникальный UID, подобный этому), а затем делаем цикл для удаления каждого файла.

сначала создайте клиентадля подключения к служебной учетной записи

$drive_service = new Google_Service_Drive($client);

секунда, получите все файлы в папке, на которую ссылается 0B1-GGKdq5A3qX1dzNkhOLW1VWVU

$files_list = $drive_service->files->listFiles(array(
                'fields' =>  'files(id, name)',
                'q' => "'0B1-GGKdq5A3qX1dzNkhOLW1VWVU' in parents" , 
);)  ;
$files_list = $files_list->getFiles() ;

, затем выполните цикл для удаления всех файлов

foreach ($files_list as $file){
        $id = $file->id;
        $resp = $drive_service->files->delete($id);
}
0 голосов
/ 24 мая 2018

Оказывается, чтобы уменьшить использование хранилища для служебной учетной записи, файлы необходимо также удалить с помощью служебной учетной записи.

Когда файлы удаляются из учетной записи службы Google Диска?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...