sharedWithMe不适用于drive.file范围

时间:2014-03-12 06:53:12

标签: google-drive-api

我正在使用范围为drive.file的.NET Google云端硬盘应用。我的应用程序没有通过查询Q = sharedWithMe显示共享文件列表。但是,当我更改应用程序的范围以驱动文件列表时,会出现。当范围设置为drive.file时,为什么它不起作用?我在Drive控制台上创建了另一个项目并对其进行了测试,但它再次失败了。

4 个答案:

答案 0 :(得分:1)

Drive.Files scope表示它只允许访问由应用打开或创建的文件。新的API对文件范围的限制更严格,我相信因为谷歌正试图推动开发人员使用新的google file picker(作为安全措施)来访问不是由应用程序创建的文件。

您的解决方案是:

  1. 使用Google文件选择器。
  2. 使用之前的api,并使用更广泛的范围。
  3. 与app(@pinoyyid answer)分享明确,例如通过创建application owned account
  4. 更新:我刚刚测试过,可以确认您的结果。 “由应用程序创建”不是帐户之间共享的属性。它只影响原始帐户。

答案 1 :(得分:1)

drive.file 只能看到使用该应用创建或与应用明确共享的文件。与用户共享文件是不够的,还需要与应用程序共享。

答案 2 :(得分:1)

使用Drive.File范围,每个用户都需要授权您的应用查看该文件。

因此,如果您共享该文件,则其共享的用户需要使用您的应用程序显式打开该文件,以便您在该上下文中查看该文件。

答案 3 :(得分:1)

根据我的经验,drive.file范围权限似乎不一致。

例如(所有操作都由具有drive.file范围的应用程序执行):

  • userA创建一个folderA(使用 files.insert
  • userA在folderA中创建一个名为fileA的文件(使用 / upload / drive / v2 / files
  • userA与userB共享folderA和fileA(使用 permissions.insert
  • userB可以查看有关folderA和fileA的信息(使用 files.get )(因此,UserB帐户上的应用程序可以同时访问文件夹和文件
  • 如果userA在folderA上运行children.list,或者在父项中运行q:folderA的 files.list,则会显示fileA
  • 如果userB运行相同的命令,则不会显示fileA

我为上面例子的复杂性道歉,我可以设置一个简单的javascript演示,如果这会有所帮助。

我在Google云端硬盘文档中找不到任何关于在不同帐户上访问应用程序创建文件的限制,因此可能是去年试图解决范围违规错误的错误。

例如: List ignores drive.file scope and shows shared files not created by the calling app