1

서비스 계정이있는 .NET client API으로 Google 드라이브에 파일을 생성합니다. 모든 도메인에Google 드라이브 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

소유권 이전은 동일한 도메인의 사용자간에 만 수행 할 수 있으며 서비스 계정은 모든 도메인에 속하지 않습니다. 가장 좋은 방법은 서비스 계정이 액세스 할 수있는 팀 드라이브를 만들고 2 단계 프로세스를 수행하는 것입니다.

  1. 파일을 팀 드라이브로 이동하려면 서비스 계정을 사용하십시오. Files.updateaddParents 매개 변수를 팀 드라이브 ID로 설정하십시오.
  2. 도메인 사용자를 사용하여 파일을 팀 드라이브 밖으로 이동하십시오. Files.updateroot (또는 일부 대상 폴더의 ID) 및 removeParents 매개 변수를 팀 드라이브 ID로 설정하여 addParents 매개 변수를 설정하십시오.