2012-12-04 46 views
3

我使用的是谷歌雲端硬盤API在C#中複製,更改所有者和刪除文檔的所有權限,這裏是我如何做到這一點後:文件在我的網盤仍然可見改變所有者和刪除所有權限

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

一切工作正常,除了用戶1仍然可以看到他的驅動文件。不是一直都在,但它總是最終顯示,有時在過程後的幾個小時。另外,我使用API​​在這些複製文檔上運行了僞造的用戶權限插入/刪除,這些文檔從User1 Drive消失,但幾小時後又重新出現。我甚至無法使用User1的API訪問這些文檔。當我點擊來自User1的那些文件時,它說我沒有訪問權限並且需要請求它。

一切都是在用戶2側的罰款。

這不是一個瀏覽器緩存的問題,因爲我已經清楚一切,改變了瀏覽器,甚至是電腦多次。

+0

從谷歌的任何人能告訴我,如果這是改變文檔的擁有者正確的方法是什麼? –

+0

更新:幾周前我在Google與某人談過話,並且我的代碼中的一切都很好,問題出在Drive前端,根據他的說法,這可能需要一點時間才能修復。 –

回答

0

這聽起來像是一致性問題。你可能期望很高的一致性,但注意最終的一致性。在https://developers.google.com/storage/docs/developer-guide#consistency描述

爲列表操作是最終的一致,而ACL是強一致。換句話說:權限工作正常,而列表稍後更新。

+0

我在某些情況下等了很多天,以確保這不僅僅是一個一致性問題,也不會改變,無論我等待多久...... –

相關問題