我有一个应用程序,我的应用程序的用户可以上传/下载文件,我不希望他们每次想要上传文件时进行授权。所以我开始知道服务帐户是它的解决方案,这正是我所寻求的。我按照本页中的说明进行操作:
https://developers.google.com/drive/service-accounts
这一切都很好,但问题是限制,即只有5GB,是不是我可以为我的服务帐户购买一些Additonal存储(有人提到它不能做,但我仍然只是想确认)。我不想使用Web服务器流,我保存凭证,即访问令牌,并在每次到期时刷新令牌。我的问题有解决办法吗?
答案 0 :(得分:1)
将文件存储在您自己的Google云端硬盘帐户而非谷歌服务帐户中的解决方案是授予所有者对您的Google开发者控制台中的服务帐户的权限。
然后在您的个人google云端硬盘中创建一个文件夹,并获取该文件夹的ID。
当您使用服务帐户上传文件时,请确保将该文件夹的ID作为您正在上传的文件的父ID
$file = new Google_Service_Drive_DriveFile();
$file->title = "Automata";
$parent = new Google_Service_Drive_ParentReference();
$parent->setId('Your Folder id');
$file->setParents(array($parent));
$requestss = $drive_service->files->insert($file,array(
'data' => $data,
'mimeType' => 'application/pdf',
));
$permission = new Google_Service_Drive_Permission();
$permission->setRole( 'writer' );
$permission->setType( 'anyone' );
$permission->setValue( 'youraccount@gmail.com' );
$drive_service->permissions->insert( $requestss->getId(), $permission );
现在,您可以将文件上传到自己的google驱动器而不是服务帐户驱动器
希望这有帮助
答案 1 :(得分:0)
答案 2 :(得分:0)
将普通帐户的文件夹分享到您的服务帐户 您的服务帐户地址如XXX@XXX.iam.gserviceaccount.com 然后,您的服务帐户可以查看普通帐户中的共享文件夹 现在,您的服务帐户将获得普通帐户的额外存储空间。