Google Drive API (.NET) - 将所有权从服务帐户转移到域用户
Google Drive API (.NET) - Transfer ownership from Service Account to Domain user
我正在 Google 驱动器上使用 .NET client API 使用服务帐户创建文件。
string[] scopes = new string[] { DriveService.Scope.Drive };
GoogleCredential credential;
using (var stream = new FileStream(Directory.GetCurrentDirectory() + "/Resources/GoogleCredentials.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream).CreateScoped(scopes);
}
DriveService drive = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
});
我成功创建了文件,
var f = drive.Files;
var request = f.Create(new Google.Apis.Drive.v3.Data.File()
{
Name = "Test from ASP.NET Core",
AppProperties = prop,
MimeType = "application/vnd.google-apps.document"
});
var file = await request.ExecuteAsync();
与所有域共享,但我无法将所有权转让给域用户。
Permission permission = new Permission()
{
EmailAddress = "user@example.com",
Type = "user",
Domain = "example.com",
Role = "owner"
};
var requestpermission = drive.Permissions.Create(permission, file.Id);
requestpermission.TransferOwnership = true;
var perm = await requestpermission.ExecuteAsync();
我收到错误:
The specified domain is invalid or not applicable for the given
permission type.
我找到了 ,但不推荐使用 p12 证书文件。所以我想用 JSON.
所有权转移只能在同一域中的用户之间进行,服务帐户不属于任何域。您最好的选择可能是创建服务帐户有权访问的团队驱动器,并执行两阶段过程:
- 使用服务帐户将文件移动到团队驱动器中。
Files.update
addParents
参数设置为团队云端硬盘 ID。
- 使用域用户将文件移出团队驱动器。
Files.update
,addParents
参数设置为 root
(或某个目标文件夹的 ID),removeParents
参数设置为团队云端硬盘 ID。
我正在 Google 驱动器上使用 .NET client API 使用服务帐户创建文件。
string[] scopes = new string[] { DriveService.Scope.Drive };
GoogleCredential credential;
using (var stream = new FileStream(Directory.GetCurrentDirectory() + "/Resources/GoogleCredentials.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream).CreateScoped(scopes);
}
DriveService drive = new DriveService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
});
我成功创建了文件,
var f = drive.Files;
var request = f.Create(new Google.Apis.Drive.v3.Data.File()
{
Name = "Test from ASP.NET Core",
AppProperties = prop,
MimeType = "application/vnd.google-apps.document"
});
var file = await request.ExecuteAsync();
与所有域共享,但我无法将所有权转让给域用户。
Permission permission = new Permission()
{
EmailAddress = "user@example.com",
Type = "user",
Domain = "example.com",
Role = "owner"
};
var requestpermission = drive.Permissions.Create(permission, file.Id);
requestpermission.TransferOwnership = true;
var perm = await requestpermission.ExecuteAsync();
我收到错误:
The specified domain is invalid or not applicable for the given permission type.
我找到了
所有权转移只能在同一域中的用户之间进行,服务帐户不属于任何域。您最好的选择可能是创建服务帐户有权访问的团队驱动器,并执行两阶段过程:
- 使用服务帐户将文件移动到团队驱动器中。
Files.update
addParents
参数设置为团队云端硬盘 ID。 - 使用域用户将文件移出团队驱动器。
Files.update
,addParents
参数设置为root
(或某个目标文件夹的 ID),removeParents
参数设置为团队云端硬盘 ID。