3

C# で Google ドライブ API を使用して、ドキュメントのコピー、所有者の変更、およびすべての権限の削除を行っています。

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

User1のドライブ内のドキュメントが引き続き表示されることを除いて、すべて正常に動作します。常にすぐに表示されるわけではありませんが、プロセスの数時間後に表示されることもあります。また、API を使用して、コピーしたドキュメントに対して偽のユーザー権限の挿入/削除を実行しました。ドキュメントは User1 ドライブから消えますが、数時間後に再び表示されます。User1 の API を使用してこれらのドキュメントにアクセスすることさえできません。User1 のドキュメントをクリックすると、アクセス権がなく、要求する必要があると表示されます。

User2 側ではすべて問題ありません。

これはブラウザのキャッシュの問題ではありません。すべてをクリアしてブラウザを変更したためです。コンピュータも何度も変更しました。

4

1 に答える 1

0

これは一貫性の問題のように聞こえます。おそらく強い一貫性を期待しますが、結果整合性に注意してください。

https://developers.google.com/storage/docs/developer-guide#consistencyで説明されているように、リスト操作は結果整合性がありますが、ACLは強力な一貫性があります。つまり、権限は正常に機能しますが、リストは後で更新されます。

于 2013-01-10T08:25:15.320 に答える