2014-03-12 46 views
0

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

回答

1

Drive.Files scope声明只允许访问由应用程序打开或创建的文件。新的API对文件范围有更多的限制,我相信因为谷歌正在试图推动开发者使用新的google file picker(作为一种安全措施)来访问非应用程序创建的文件。

你的解决方案是:

  1. 使用谷歌文件选择器。
  2. 使用先前的api,并使用更广的范围。
  3. 与app(@pinoyyid answer)共享明确性,例如,通过创建一个application owned account

更新:我刚测试过,并且可以确认你的结果。 “由应用程序创建”不是帐户之间共享的属性。它只影响原始帐户。

+0

不,我不想用Drive.Files范围之外的文件。我使用具有范围Drive.File的应用程序共享文件。当我以其他用户身份登录到我的应用程序(共享列表中的人员)时,共享文件列表为空,而在Drive API中存在这些文件。 – Edi

+0

看到我更新.. – NameSpace

+0

能否请您解释一下我:“”创建者应用程序“是不是账户之间共享的属性,它不仅影响了原来的帐户”。谢谢 – Edi

1

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

1

与Drive.File范围,每个单独的用户需要授权您的应用程序来查看该文件。

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

+0

我使用相同的应用程序来创建,共享和打开文件。该方案是这样的:一个用户上传文件通过我的应用程序并分享给其他用户,这反过来又通过我的应用程序(Q = sharedWithMe)应该看到该文件。最后一个用户看不到这个文件。所以,用户不能显式地打开文件来查看它。用户已通过drive.file作用域授予我的应用程序权限。他为什么看不到该文件? – Edi

+0

“他为什么看不到该文件?”看到我的回答以及谢丽尔的!用户B必须与您的应用共享该文件。只有这样,用户B帐户下运行的应用才能看到该文件。 – pinoyyid

1

根据我的经验,drive.file作用域权限似乎不一致。

例如(所有操作都通过与drive.file范围应用来执行):

  • 用户A创建了一个folderA(使用files.insert
  • 用户A创建一个文件内folderA称为的fileA (使用/上传/驱动器/ V2 /文件
  • 用户A股folderA与用户B的fileA(使用permissions.insert
  • 用户B可以看到关于这两种folderA和的fileA信息(使用files.get)(因此,对用户B帐户的应用程序同时访问的文件夹和文件
  • 如果用户A运行children.list上folderA或文件其中q .LIST:folderA在父母,它会显示的fileA
  • 如果用户B运行相同的命令时,它不会显示的fileA

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

我找不到任何地方,声称有关访问到不同的帐户的应用程序创建的文件任何限制谷歌驱动器文档中,所以它可能是一个错误引入的试图解决范围违规错误的最后一年。

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