0

我目前正在使用 Admin SDK 中的 Google Reports API 开发 C# asp.net mvc Web 应用程序,以便的 Google Drive 上发生某些事情时接收通知。

然后,我需要另外使用Drive REST API GET Request来构建文件路径(以及更多),方法是使用doc_idReports API 给定的。


一切正常,除非报告 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

文件所有者可以使用此表单查看其文件的元数据,但我仍然有错误 404。

我是驱动器管理员,在我的 Google Apps 管理员设置中,我尝试了不同的配置,但没有成功,即使使用域中每个人的默认共享链接也是如此。


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

PS:我正在使用与我的工作域相关的无限制工作的谷歌应用程序,所以我想我至少可以作为管理员获取元数据文件,即使文件没有共享。

4

1 回答 1

1

据我所知,在 Drive API 中访问用户文件的唯一方法是为您的 Web 应用程序设置服务帐户。您可以在域范围委派下的 Drive API 文档中阅读更多相关信息。

做一个简短的总结:

服务帐户是属于您的应用程序而不是个人最终用户的帐户。这允许您的应用程序有权以您域中的用户的身份进行 API 调用(也可以“模拟”用户)。

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

  1. 在 Google Developers 控制台中创建或选择一个项目并启用 API(例如 Drive API)。
  2. 转到凭据,添加新凭据并选择服务帐户。更多细节在这里
  3. 这将创建三个项目(客户端 ID、私钥文件和电子邮件地址),这是在 Google Apps 域的Admin Console中授权您的应用程序所必需的。

现在,您创建的服务帐户需要被授予访问您想要访问的 Google Apps 域的用户数据的权限。这需要管理员在管理控制台中授权服务帐号。由于它已在文档中提供,因此您可以访问文档中的相应步骤

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

于 2015-10-21T21:01:19.403 回答