google-api - 使用服务帐号为用户创建团队云端硬盘
问题描述
我正在创建一个管理面板,该面板使用带有 PHP SDK 的 Google API 创建 G Suite 用户帐户。我已经完成了创建用户的部分,但现在我想知道如何为新创建的用户创建团队云端硬盘?我看不到可以添加新创建的用户 ID(如电子邮件)的参数。我错过了什么吗?
https://developers.google.com/drive/api/v3/reference/teamdrives/create
下面的代码可以创建团队云端硬盘,但它会被添加到创建服务帐户的 G Suite 帐户中。
$service = new \Google_Service_Drive($this->client($scopes));
$metadata = new Google_Service_Drive_TeamDrive();
$metadata->setName('My New Drive');
do {
$requestId = Uuid::uuid4()->toString();
try {
$resp = $service->teamdrives->create($requestId, $metadata);
} catch (Google_Service_Exception $e) {
$resp['statusCode'] = $e->getCode();
$resp['errors'] = $e->getErrors();
$resp['message'] = $e->getMessage();
}
} while ( isset($resp['statusCode']) );
解决方案
我通过在创建团队驱动器后立即附加驱动器权限解决了这个问题。不要忘记将可选参数 supportsTeamDrives 设置为 true
$service = new \Google_Service_Drive($this->client($scopes));
$postBody = new \Google_Service_Drive_Permission();
$postBody->setKind('drive#permission');
$postBody->setEmailAddress($email);
$postBody->setType($type);
$postBody->setRole($role);
$optParams = [
'supportsTeamDrives' => true
];
try {
$resp = $service->permissions->create($drive_id, $postBody, $optParams);
} catch (Google_Service_Exception $e) {
return abort($e->getCode());
}
推荐阅读
- html - 如何在浮动组件下方设置页脚?
- google-apps-script - 如何解决/处理偶尔出现的 API 400 错误
- python - 如何编写 Python 代码,在 0.0.0.0 上提供 .html 文件?
- css - 如何将 iPhone 和所有网络浏览器的 CSS 菜单居中
- python - 在一个文件中轮换多个文本文件的内容?
- python - 有效地重塑这个数组
- android - 如何在 RecyclerView 项目点击上实现两个 OnClickListeners?
- python - 如果字符串包含每一行的特定值,则替换字符串
- apache-kafka-streams - 有人可以提供一个带有如何使用 inter.broker.protocol.version = 2.1-IV2 运行 Kafka-streams 的 scala 示例的链接吗?
- c++ - 尝试创建指针数组,但是当我尝试定位时(运行时错误)