使用服务帐户对文档进行API访问

时间:2015-01-30 17:51:40

标签: google-drive-api google-api-java-client

我试图访问" google.com"下的电子表格。通过服务帐户使用Google Drive Java API的域名。我需要导出文档中包含的几个工作表。

我已经能够创建和使用服务帐户(通过Java API使用),但我不确定如何访问,或者我尝试做的事情是否可行。我看到了以下页面:https://developers.google.com/drive/web/delegation但是,与我合作的服务帐户似乎不太可能被授予访问google.com公司域的权限。我们在Google的帐户联系人建议我们查看论坛以获取一些建议。

鉴于此,我对方法有几个问题:

  • 我是否误解了访问要求?更具体地说,有一种方法可以授予服务帐户访问特定文档的权限吗?
  • 此任务(工作表导出)是否更适合Spreadsheets API?该API似乎专注于在电子表格中运行,并且驱动器API似乎处理文件/文档管理。
  • 是否需要将文档副本发送到其他域?

我的猜测是我们需要复制文档,但我想确定,并确保我理解API并正确访问。

谢谢!

2 个答案:

答案 0 :(得分:7)

您还必须授予您要访问的驱动器文件中的服务帐户。只需Share您希望通过 Google Developers Console 中显示的EMAIL ADDRESS访问的文档(例如XXXXX@developer.gserviceaccount.com

答案 1 :(得分:2)

您有权访问该文件吗?尝试使用方法files.get https://developers.google.com/drive/v2/reference/files/get如果您收到200响应然后您有权访问,请尝试查找参数exportlinks 使用这些链接,您可以将文件导出为不同的格式。 否则你就无法做到。

  • 只有获得该文件访问权限的人才能访问该文件。对于具有域管理员批准的委托的服务帐户,服务帐户可以模拟该域中的人员。如果模仿的用户无权访问某个文件,则该服务帐户也无法访问。

  • 要使用Drive API导出文件效果更好,因为您提到Spreadsheets API用于管理电子表格的内容。

  • 如果您想修改信息而不修改原始文件,那么是。

希望这会有所帮助。