服务帐户和Google云端硬盘:创建文件夹

时间:2018-06-20 20:37:02

标签: php google-drive-api

我正在使用一个PHP应用程序,允许用户通过该应用程序在Google云端硬盘上创建文件夹。我看不到正在从应用程序创建的文件夹。我已经尝试过此answer。服务帐户设置为所有者(完全访问),我认为将服务帐户设置为所有者将允许使用该应用程序的任何人至少具有作者,评论者和读者的权限。我尝试了上述答案,但只能打印出以下内容:

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();
}

0 个答案:

没有答案