我写了一些逻辑,将文件上传到Google云端硬盘文件夹,该文件夹与服务帐户共享(uploader@uploadproject-204816.iam.gserviceaccount.com)
Google云端硬盘本身与我的G Suite帐户相关联。
这工作了一段时间,但最终我开始收到此错误:
Google.Apis.Requests.RequestError用户的云端硬盘存储空间配额 被超过了。 [403]错误[消息[用户的云端硬盘存储空间配额 已超出。]位置[ - ]原因[storageQuotaExceeded] 域[全球]]
从那时起,上传工作无效,即使上传了一个微弱的文件也会出现此错误。
使用我的真实帐户,我清理了服务帐户拥有的所有文件,甚至是那些“无组织”的文件。
左边的配额说“使用了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
确实,我现在了解存储配额错误。问题是,如何重置这些数字?上传服务帐户的所有文件都被MY帐户删除在同一位置。
有什么想法吗?
答案 0 :(得分:0)
结果是降低了服务帐户的存储空间,还需要使用服务帐户删除文件。
When does the files get deleted from Google Drive Service account?
答案 1 :(得分:0)
您无法删除使用真实帐户由帐户服务创建(拥有)的文件。
即使您这样做,也不会在真实帐户中看到文件,但仍会在服务帐户中看到文件。
您必须使用帐户服务将其删除。
下面的脚本解释了如何使用PHP删除文件。为此,您必须知道要删除的文件的ID。因此我们要求获取由0B1-GGKdq5A3qX1dzNkhOLW1VWVU引用的父文件夹中包含的所有文件ID(每个文件和文件夹都由唯一的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);
}