1

Je crée un fichier sur le disque Google avec .NET client API avec le compte de service.API Google Drive (.NET) - Transférer la propriété du compte de service à l'utilisateur de domaine

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

Je crée avec succès fichier,

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

partager avec tout domaine, mais je ne peux pas transférer la propriété à un utilisateur de domaine.

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

J'obtiens l'erreur:

The specified domain is invalid or not applicable for the given permission type.

Je trouve this link, mais en utilisant le fichier cert p12 n'est pas recommandé. Donc, je veux utiliser JSON.

Répondre

2

Les transferts de propriété peuvent uniquement être effectués entre des utilisateurs du même domaine et les comptes de service n'appartiennent à aucun domaine. La meilleure option consiste peut-être à créer un Drive d'équipe auquel le compte de service a accès et à effectuer un processus en deux étapes:

  1. Utilisez le compte de service pour déplacer le fichier dans le lecteur d'équipe. Files.update avec le paramètre addParents défini sur l'ID du disque d'équipe.
  2. Utilisez l'utilisateur de domaine pour retirer le fichier du disque d'équipe. Files.update avec le paramètre addParents défini sur root (ou sur l'ID du dossier cible) et le paramètre removeParents sur l'ID du disque d'équipe.