首页 > 解决方案 > 服务帐户和 Google Drive:创建文件夹

问题描述

我正在开发一个 PHP 应用程序,允许用户通过该应用程序在 Google Drive 上创建文件夹。我看不到从应用程序创建的文件夹。我已经尝试过这个答案。服务帐户设置为所有者(完全访问权限),我认为设置为此的服务帐户将允许使用该应用程序的任何人至少拥有作者、评论者和读者权限。我尝试了上面的答案,但我只能打印出来:

Google_Service_Drive_Permission Object ( [collection_key:protected] => teamDrivePermissionDetails [allowFileDiscovery] => [deleted] => [displayName] => [domain] => [emailAddress] => [expirationTime] => [id] => 16863121739429784266 [kind] => drive#permission [photoLink] => [role] => writer [teamDrivePermissionDetailsType:protected] => Google_Service_Drive_PermissionTeamDrivePermissionDetails [teamDrivePermissionDetailsDataType:protected] => array [type] => user [internal_gapi_mappings:protected] => Array ( ) [modelData:protected] => Array ( ) [processed:protected] => Array ( ) ) 

SetValue() 似乎没有与 Google API v3 一起使用,而是使用了 setEmailAddress()。我知道我通过查看开发人员控制台资源图访问了 Drive API,并且每当我请求资源时都可以看到峰值。

我没有收到错误,而且我还可以看到文件/文件夹 ID,只是没有看到驱动器中新创建的文件夹。还能是什么?有人能指出我正确的方向吗?

我的代码如下:

$client = new Google_Client();
$client->setAccessToken($result);  //$result holds the token, using JWT

$service = new Google_Service_Drive($client);

//Insert a file
$fileMetadata = new Google_Service_Drive_DriveFile(array(
    'name' => 'window',
    'mimeType' => 'application/vnd.google-apps.folder'));
$file = $service->files->create($fileMetadata, array(
    'fields' => 'id'));
printf("Folder ID: %s\n", $file->id);
$fileId = $file->id;

$newPermission = new Google_Service_Drive_Permission();
$value="createfolder@dummydocs.iam.gserviceaccount.com";
$type="user";
$role="writer";
$newPermission-> setEmailAddress($value);
$newPermission->setType($type);
$newPermission->setRole($role);
try {
    $res= $service->permissions->create($fileId, $newPermission);
     print_r($res); 
} catch (Exception $e) {
     print "An error occurred: " . $e->getMessage();
}

标签: phpgoogle-drive-api

解决方案


推荐阅读