在没有OAuth2redirect/复制和粘贴的情况下访问私有Google云端硬盘数据

我正在开发一个开源的Node模块,需要访问每个用户的私有Google云端硬盘文件。 我一直试图围绕所有这些不同的身份validationtypes,并走到了路障。 从我收集的信息来看,有两种主要的身份validationtypes

  1. 作为图书馆作者,我在图书馆中提供了使用OAuth2validation每个用户所需的公钥和私钥。 这意味着给他们一个URL去让我的应用程序访问他们的数据的权限,并让他们复制并粘贴访问码回到他们的terminal。 我能够通过这个教程,并得到它的工作,但这种方法似乎是危险的,因为我必须与我的图书馆打包的密钥,并不必要的困难。

  2. 让用户访问Google API控制台,获取他们自己的API密钥,并通过某种configuration文件将其提供给我的库。 没有URLredirect,没有复制和粘贴,只有他们有权访问的一些私人凭据。

2对我来说听起来好多了:这个图书馆一旦拿到用户手里就完全没有用,所以感觉不正确。 但是从我所能find的方面来说,使用Google的API来做到这一点的唯一方法是创build一个Google服务帐户,下载他们提供给您的JSON,通过类似于这篇博文顶部评论的stream程,然后手动给服务帐户电子邮件访问我的个人Google云端硬盘文件。 这看起来很诡异,而且还有很多工作要获得我自己的私人数据。 有没有更好的方法去做这件事? 我觉得这很奇怪,在其他API中这种相当标准的stream程只能通过服务帐户在Google的API中使用,但也许有一种方法,我只是没有看到它。 我是相当新的身份validation,所以任何帮助都是赞赏。 谢谢!

首先,我想说,你不能释放你的开源项目与您在Google Developers控制台上创build的客户端ID和客户端隐私,这是违反Google 的服务条款 。

1.开发人员凭据(如密码,密钥和客户端ID)旨在供您使用,并标识您的API客户端。 您将保持您的凭据保密,并做出合理的努力,防止和阻止其他API客户端使用您的凭据。 开发人员凭据可能不会embedded在开源项目中。

关于在开源项目中暴露客户端ID的另一个问题的答案。

其次,您可以指导您的用户使用Oauth2或服务帐户,或者两者都取决于您。

如果用户只能访问他们自己的数据,并且不需要访问其他人的数据,那么他们可以使用服务帐户来指导他们如何与服务帐户共享Google云端硬盘上的文件夹。 但是,从你身边的权限可以是棘手的,当他们上传服务帐户将自己的file upload到用户的谷歌驱动器帐户,您将需要有服务帐户添加权限的用户,使用户将然后也能够访问说文件。

最简单的方法将是Oauth2,当代码上传文件时,它们由经过身份validation的用户拥有,因此您不会与服务帐户拥有相同的权限问题。