1

我在谷歌創建文件與.NET client API與服務帳戶駕駛。谷歌雲端硬盤API(.NET) - 從服務帳戶所有權轉讓給域用戶

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 = "[email protected]", 
     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.

我發現this link,但使用P12證書文件不推薦。所以我想使用JSON。

回答

2

所有權轉讓只能在同一個域中的用戶之間完成,服務帳戶不屬於任何域。您最好的選擇可能是創建服務帳戶有權訪問的團隊雲端硬盤,並執行兩個階段的過程:

  1. 使用服務帳戶將文件移動到團隊驅動器中。 Files.updateaddParents參數設置爲小組驅動器ID。
  2. 使用域用戶將文件移到出局的球隊驅動器。 Files.updateaddParents參數集root(或一些目標文件夾的ID)和removeParents參數設置爲小組驅動器ID。
相關問題