无需OAuth2重定向/复制和粘贴即可访问私有Google云端硬盘数据

时间:2016-06-15 06:29:09

标签: javascript node.js google-api google-oauth google-authentication

我制作的开源节点模块需要访问每个用户的私人Google云端硬盘文件。我一直试图绕过所有这些不同的身份验证类型,并且已经走到了路障。根据我收集的内容,有两种主要的身份验证类型

  1. 我是图书馆作者,在我的图书馆中提供了使用OAuth2对每个用户进行身份验证所需的公钥和私钥。这意味着为他们提供一个URL,以授予我的应用程序访问其数据的权限,并让他们将访问代码复制并粘贴回他们的终端。我能够运行this教程并使其工作,但这种方法似乎很危险,因为我必须使用我的库打包的密钥,并且不必要地困难。

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

  3. 2对我来说听起来好多了:这个图书馆在用户手中完全与我没有任何关系,因此让他们对我进行身份验证感觉不正确。但是根据我的发现,使用Google的API执行此操作的唯一方法是创建Google服务帐户,下载他们为您提供的JSON,并执行类似于this上的热门评论的流程博客文章,然后手动授予服务帐户电子邮件访问我的个人Google云端硬盘文件的权限。这似乎是hacky,并且有很多工作可以访问我自己的私有数据。有没有更好的方法来解决这个问题?我觉得奇怪的是,其他API中的这个相当标准的流程只能通过服务帐户在Google的API中使用,但也许有一种方法,我只是没有看到它。我对身份验证很新,所以对任何帮助都表示赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

首先,我想说您无法使用您在Google Developers控制台上创建的客户端ID和客户端秘密来发布您的开源项目,这是针对googles terms of service的。

  

1.开发人员凭据(例如密码,密钥和客户端ID)旨在供您使用并标识您的API客户端。你会保留   您的凭证保密并做出合理的努力来防范   并阻止其他API客户端使用您的凭据。   开发人员凭证可能未嵌入开源项目中。

关于在open source projects中公开客户ID的另一个问题的答案。

其次,您可以指示您的用户使用Oauth2或服务帐户,或者两者都使用它。

如果用户只访问他们自己的数据并且不需要访问其他人的数据,那么他们可以使用您需要的服务帐户来指导他们如何使用服务帐户在Google云端硬盘上共享文件夹。但是从您身边获取权限可能会很棘手,当他们上传服务帐户时会将自己上传的文件上传到用户google驱动帐户,您需要让服务帐户为用户添加权限,这样用户才能访问说文件。

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