sharedWithMe 不适用于drive.file 范围

问题描述 投票:0回答:5

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

google-drive-api
5个回答
1
投票

Drive.Files 范围声明它只允许访问由应用程序打开或创建的文件。新的 API 对文件范围的限制更加严格,我相信是因为 Google 正在尝试推动开发人员使用新的 google 文件选择器(作为安全措施),以访问不是由应用程序创建的文件。

您的解决方案是:

    使用 Google 文件选择器。
  1. 使用之前的api,并且使用范围更广。
  2. 与应用程序明确共享(@pinoyyid 答案),例如通过创建一个
  3. 应用程序拥有的帐户

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


1
投票

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


1
投票
对于 Drive.File 范围,每个单独的用户都需要授权您的应用程序才能查看该文件。

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


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

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

    userA 创建一个文件夹A(使用
  • files.insert
  • 用户A在文件夹A内创建一个名为fileA的文件(使用
  • /upload/drive/v2/files
  • 用户A与用户B共享文件夹A和文件A(使用
  • permissions.insert
  • 用户B可以查看有关文件夹A和文件A的信息(使用
  • files.get)(因此用户B帐户上的应用程序可以访问文件夹和文件
  • 如果用户A在folderA上运行children.list或在parents中运行q:folderA的
  • files.list,它将显示fileA
  • 如果用户B运行相同的命令,它将不会显示文件A
对于上面示例的复杂性,我深表歉意,如果有帮助的话,我可以设置一个简单的 javascript 演示。

我在 Google Drive 文档中找不到任何地方声称对访问应用程序在不同帐户上创建的文件有任何限制,因此这可能是去年为解决范围违规错误而引入的错误。

例如:

列表忽略drive.file范围并显示不是由调用应用程序创建的共享文件


0
投票
如果您的唯一目标是列出文件,那么对我来说,

drive.readonly

范围最适合您。

drive.file

范围将仅显示与您的应用程序专门共享的文件,如其他答案所述

drive.readonly

甚至会显示经过身份验证的用户的私人文件。此外,drive.readonly 不是限制或敏感的 api 级别,这可以使您的应用程序免于经过验证过程。

© www.soinside.com 2019 - 2024. All rights reserved.