3 votes

Document toujours visible dans My Drive après avoir changé de propriétaire et supprimé toutes les autorisations

J'utilise l'API Google Drive en C# pour copier, changer de propriétaire et supprimer toutes les permissions d'un document, voici comment je procède :

File file = User1DriveService.Files.Copy(fileWithTitleChanged, OriginalFile.Id).Fetch()

//new owner permission
Permission newOwnerPermission = new Permission();
newOwnerPermission.Value = User2Email;
newOwnerPermission.Type = "user";
newOwnerPermission.Role = "owner";
newOwnerPermission.WithLink = false;
User1DriveService.Permissions.Insert(newOwnerPermission, file.Id).Fetch();

//remove all permissions, using User2 DriveService
permissionList = User2DriveService.Permissions.List(file.Id).Fetch();

foreach (Permission CurrentPermission in permissionList.Items)
{
    User2DriveService.Permissions.Delete(file.Id, CurrentPermission.Id).Fetch();
}

//update name and folder for User2
File FileCopyProperties = new File();
FileCopyProperties.Parents = newParentReferenceList; //folder in User2 drive
FileCopyProperties.Title = NewFileTitle;
User2DriveService.Files.Update(FileCopyProperties, file.Id).Fetch();

Tout fonctionne bien, sauf que Utilisateur 1 voit toujours le document dans son Drive. Ce n'est pas toujours le cas, mais il finit toujours par s'afficher, parfois quelques heures après le processus. De plus, j'ai effectué une fausse insertion/suppression de permission d'utilisateur sur ces documents copiés à l'aide de l'API, les documents disparaissent du Drive de User1 mais réapparaissent quelques heures plus tard. Je ne peux même pas accéder à ces documents à l'aide de l'API à partir de User1. Lorsque je clique sur ces documents à partir de User1, il est indiqué que je n'ai pas l'accès et que je dois le demander.

Tout se passe bien du côté de l'utilisateur 2.

Il ne s'agit pas d'un problème de cache du navigateur, car j'ai tout effacé et j'ai changé de navigateur et même d'ordinateur à plusieurs reprises.

0voto

atlaste Points 4658

Cela ressemble à un problème de cohérence. Vous vous attendez probablement à une forte cohérence, mais vous remarquez une éventuelle cohérence.

Comme décrit sur https://developers.google.com/storage/docs/developer-guide#consistency les opérations sur les listes sont éventuellement cohérentes, tandis que l'ACL est fortement cohérente. En d'autres termes, les autorisations fonctionnent correctement, mais la liste est mise à jour ultérieurement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X