2013-08-03 117 views
1

我不確定我是否遇到錯誤或者我做錯了什麼。我正在開發一款應用程序,允許用戶在其Google雲端硬盤上創建和共享文件夾,以便他們可以協作處理該文件夾的內容。該文件夾在用戶的Google Drive的根目錄下創建,最初包含一對文件和一個包含更多文件的子文件夾。Google Drive API權限傳播和文件userPermission屬性

第一個問題是,在主文件夾上插入新權限後,權限通常會傳播到所有文件和子文件夾,但有時無法將權限插入到子文件中的某個文件中目錄。這種功能是否將權限傳播給子目錄,這些東西是官方支持的,或者我想將權限分別插入到所有文件中?

我遇到的第二個問題涉及使用文件的userPermission屬性來檢查當前用戶的角色是否已更改。看起來,userPermission屬性有時包含最近用戶的權限而不是當前用戶的權限。我試圖實現的功能是,共享文件夾的用戶能夠定期檢查其權限角色是否已更改。例如,用戶權限角色已從「讀者」更改爲「作者」,反之亦然。這通常通過使用fileId列出文件夾並檢查文件的userPermission屬性的角色屬性起作用。但是,如果我在共享的用戶和與之共享的用戶在同一個客戶端上工作的情況下測試此功能,則get文件結果通常會將userPermission列爲最後一個訪問文件而不是當前用戶。我已經測試過,如果這是因爲我在請求頭中使用了錯誤的oauth信息,但我已經排除了這種可能性,oauth頭對於每個單獨的調用來獲取文件都是正確的。我添加了一個關於witch的測試調用,其中列出用戶permissionId,就在調用獲取文件以確認授權用戶是誰之前。用「我」名稱顯示用戶權限顯示爲錯誤的用戶。

我發現的解決方法是使用列表文件,它使用正確的userPermission返回列表中的文件。

在位於https://developers.google.com/drive/v2/reference/files#resource的參考文獻中,userPermission屬性的描述爲「該文件上經過身份驗證的用戶的權限」。

我錯了解釋這意味着userPermission將始終顯示當前用戶的角色?如果它顯示錯誤的權限,可能是什麼原因?

回答

0

關於第一個問題,即共享一個文件夾後,只有其中一個內容會一直不能共享,我發現原因。沒有得到共享的文件實際上是一個Fusion Tables文件,在我的腳本中,在插入權限後立即進行調用,以將新行插入到Fusion表文件中,似乎阻止將該許可添加到該文件在那個時候,或者永遠。因此,我發現的解決方法是在進行插入權限調用後等待幾秒鐘,然後在調用Fusion Tables查詢之前使用列表權限調用檢查權限是否已到位。

現在關於第二個問題,這可能是某種錯誤,因爲我確認我使用的是正確的oauth標記,並且事實上我發現的解決方法是使用調用列出文件而不是獲取文件。唯一的區別是除了文件ID之外,還需要文件名或其他查詢參數才能進行呼叫。在我的情況下,使用列表文件返回的文件對象將始終在userPermission字段中包含正確的值,而對於get文件,userPermission有時會包含其他用戶的信息。

1

userPermissionme表示當前已通過身份驗證的用戶,如果它顯示錯誤的權限,那麼您將使用錯誤的令牌對用戶進行身份驗證。

許可通常會傳播到所有文件和子文件夾

這種情況可能不是子文件夾和文件用自己的明確權限如此。