如何从没有浏览器的服务器访问Google Drive文档

时间:2013-01-02 17:40:40

标签: java oauth-2.0 google-drive-api

我已经完成了执行OOB OAuth2连接的示例,它可以在笔记本电脑上正常工作。

我遇到的挑战是它启动了一个浏览器,要求我验证是否要将我的应用程序的访问权限授予相关文档。从那时起,它将我的凭证集存储在本地文件中,并继续正常工作。

我的用例是我公司的许多部门都希望利用Google Docs电子表格进行报告。然后,我希望能够在服务器上运行程序(来自cron作业),该程序可以抓取这些数据并为所有部门构建汇总报告。

我打算创建一个“报告用户”,该用户被授予对相关文档的读取权限,然后使用该身份运行报告流程。

我尝试在笔记本电脑上运行它,然后将存储的凭据复制到我的服务器以供其使用。但似乎这些凭据与机器相关联,因此它通过浏览器强制执行新的验证流程。

有关如何使用Google云端硬盘的授权流程以便让我做我需要的任何建议吗?

TIA

3 个答案:

答案 0 :(得分:1)

我建议您使用已授予对所有Google Apps域用户文档的只读访问权限的服务帐户,而不是需要授予某些用户对所有文档的只读访问权限。

https://developers.google.com/drive/delegation

使用:

https://www.googleapis.com/auth/drive.readonly

作为您在“控制面板”中授予服务帐户访问权限的OAuth范围。这样,如果服务器遭到入侵,则您只能访问只读权限。

答案 1 :(得分:1)

使用API​​控制台的p12文件创建GoogleCredential(API访问>创建另一个客户ID>服务帐户等):

GoogleCredential.Builder#setServiceAccountPrivateKeyFromP12File(File)

more info on Service Accounts

答案 2 :(得分:0)

其他答案要好于此,但您始终可以获取一组凭据并将其保存在文件中以供重复使用。获取凭据可以通过Web浏览器完成,但只能执行一次,然后您的服务器可以永久使用它们(只要您请求脱机访问并获取刷新令牌)。