Google Drive API权限传播和File userPermission属性

时间:2013-08-03 14:28:24

标签: google-drive-api

我不确定我是否遇到错误或者我是否做错了什么。我正在开发一款应用,允许用户在其Google云端硬盘上创建和共享文件夹,以便他们可以协作处理该文件夹的内容。该文件夹是在用户的Google云端硬盘的根目录下创建的,最初包含一些文件和一个包含更多文件的子文件夹。

第一个问题是在主文件夹上插入新权限后,权限通常会传播到所有文件和子文件夹,但有时无法在子目录中的某个文件上插入权限。这个功能是将权限传播到子目录还是官方支持的功能,还是我想分别在所有文件中插入权限?

我遇到的第二个问题涉及使用File的userPermission属性来检查当前用户的角色是否已更改。似乎userPermission属性有时包含最近用户的权限,而不是当前用户的权限。我试图实现的功能是,与共享文件夹的用户能够定期检查其权限角色是否已更改。例如,用户权限角色从“reader”更改为“writer”,反之亦然。这通常通过使用fileId列出文件夹并检查文件的userPermission属性的role属性来实现。但是,如果我正在共享的用户和与之共享的用户在同一客户端中工作的情况下测试此功能,则get文件结果通常会将userPermission列为访问该文件的最后一个,而不是当前用户。我已经测试过这是因为我在请求标头中使用了错误的oauth信息,但我已经排除了这种可能性,oauth标头对于每个单独的get get文件调用都是正确的。我在调用获取文件以确认授权用户是谁之前添加了一个关于女巫列表的测试调用用户权限ID。对于错误的用户,将显示带有“我”名称的userPermission。

我找到的解决方法是使用列表文件,它使用正确的userPermission返回列表中的文件。

在位于https://developers.google.com/drive/v2/reference/files#resource的引用中,userPermission属性的描述是“此文件上经过身份验证的用户的权限。”

我错误地解释这意味着userPermission将始终显示当前用户的角色?如果它显示错误的许可,可能是什么原因??

2 个答案:

答案 0 :(得分:1)

userPermissionme代表当前经过身份验证的用户,如果它显示错误的权限,则表示您使用错误的令牌验证用户。

  

权限通常会传播到所有文件和子文件夹

对于具有自己显式权限的子文件夹和文件,这种情况可能不正确。

答案 1 :(得分:0)

关于第一个问题,即在共享文件夹后,其中只有一个内容不会被共享,我发现了原因。未共享的文件实际上是一个Fusion Tables文件,在我的脚本中,在插入权限后立即调用将新行插入Fusion表文件,这似乎阻止将权限添加到该文件中在那个时候,或者永远。因此,我找到的解决方法是在进行插入权限调用后等待几秒钟,然后在调用Fusion Tables查询之前使用列表权限调用检查权限是否已就位。

现在关于第二个问题,这可能是某种类型的错误,因为我确认我使用了正确的oauth令牌,并且事实上我找到了可行的解决方法,即使用调用列表文件而不是获取文件。唯一的区别是除了文件ID之外,还需要文件名或其他查询参数来进行调用。在我的情况下,随列表文件返回的文件对象将始终在userPermission字段中包含正确的值,而对于get file,userPermission有时会包含其他用户的信息。