如何使用google drive api从其他用户获取非共享文件的元数据?

时间:2015-10-20 14:12:17

标签: c# google-drive-api google-admin-sdk google-reporting-api

我目前正在使用管理员SDK 中的 Google Reports API 开发C#asp.net mvc网络应用,以便在我的Google上发生问题时接收通知驱动。

然后,我还需要使用 Drive REST API GET Request来使用Reports API提供的doc_id来构建文件路径(以及更多)

除非Report API通知另一个用户非共享文件,否则一切正常。 Drive REST API正在尝试查找文件但没有成功。

这是错误404返回:

Google.Apis.Requests.RequestError
File not found: 0B48ytfDI5h8qY2k4VzdjMkZRNXM [404]
Errors [
    Message[File not found: 0B48ytfDI5h8qY2k4VzdjMkZRNXM] Location[file - other] Reason[notFound] Domain[global]
] 

我正在使用此范围:DriveService.Scope.Drive

文件所有者可以使用this form查看其文件的元数据,但仍然有错误404.

我是驱动程序管理员,在我的Google Apps管理员设置中,我尝试了不同的配置,但没有成功,即使是域中所有人的默认共享链接。

所以我的问题是:当你不是文件所有者并且文件没有被共享时,是否可以获取文件元数据?

PS:我使用Google Apps无限制地处理与我的工作领域相关的工作,所以我认为即使文件不是,我至少也可以将管理员的元数据文件作为管理员获取共享。

1 个答案:

答案 0 :(得分:1)

据我所知,在Drive API中访问用户文件的唯一方法是为您的Web应用程序设置服务帐户。您可以在Domain-Wide Delegation下的Drive API文档中详细了解相关信息。

简要总结一下:

服务帐户是属于您的应用程序的帐户,而不是属于单个最终用户的帐户。这允许您的应用程序有权将API调用作为您域中的用户(也称为“模拟”用户)。

要开始使用,必须执行以下任务:

  1. 在Google Developers控制台中创建或选择项目并启用API(例如Drive API)。
  2. 转到凭据,添加新凭据并选择服务帐户。更多详情here
  3. 这将创建三个项目(客户端ID,私钥文件和电子邮件地址),这是在Google Apps域Admin Console中授权您的应用程序所必需的。
  4. 现在,您已创建的服务帐户需要被授予访问您要访问的Google Apps域的用户数据的权限。这将要求管理员在管理控制台中授权服务帐户。由于它已在文档中提供,因此您可以访问document中的相应步骤。

    现在,您的应用可以代表您的Google Apps域用户实例化授权的云端服务对象(即metadata)。希望这有帮助,祝你好运!