2013-08-03 78 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表示当前已通过身份验证的用户,如果它显示错误的权限,那么您将使用错误的令牌对用户进行身份验证。

许可通常会传播到所有文件和子文件夹

这种情况可能不是子文件夹和文件用自己的明确权限如此。