Google云端硬盘访问 - 服务帐户或OAuth - 读取/写入用户文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google云端硬盘访问 - 服务帐户或OAuth - 读取/写入用户文件相关的知识,希望对你有一定的参考价值。

我有一个.NET控制台应用程序,可以对文件执行操作。我想允许客户授予我们访问其Google云端硬盘帐户的权限,以便我们可以读取和写入文件。我们的控制台应用程序作为服务运行,因此用户无法与其进行交互并授权我们访问其Google云端硬盘帐户。

我正在考虑使用Google服务帐户进行应用程序级别身份验证,直到我得知服务帐户无法访问设置服务帐户的用户的Google云端硬盘文件夹。这种方法失败了,因为它是我希望获得访问权限的客户端的Google云端硬盘帐户。

我看到SO成员@pinoyyid发布的解决方法发布了in this SO answer,其中可以使用Google的Oauth2 Playground生成刷新令牌,但我担心刷新令牌可能会过期,并且需要用户干预再生成另一个。

另一个回复提到解决方案是创建服务帐户,然后与服务帐户共享用户的Google云端硬盘帐户。

Google的推荐方法是什么?如何最好地访问Google云端硬盘帐户,同时只要求所有者进行一次性身份验证,同时允许他们随时撤消访问权限?

答案

服务帐户和存储的OAuth刷新令牌都是可行的方法。每个都有其优点和缺点。

服务帐户将在您的用户只需要授予他们可以共享到SA的特定文件夹的访问权限的情况下工作。请注意,SA创建的任何文件都归SA所有,并且会占用SA的配额。您无法“将用户的云端硬盘帐户共享到SA”,您只能共享各个文件夹。

存储RT是更宽松的选择。你不会像我在你的回答中所描述的那样使用OAuth游乐场,因为要求用户通过它是非常笨拙的。相反,您需要编写自己的注册/授权服务(您可以使用AppEngine,Lambda等 - 因此编写和托管并不困难)。

以上是关于Google云端硬盘访问 - 服务帐户或OAuth - 读取/写入用户文件的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Google Drive 和 App Engine SDK 使用 Oauth2 服务帐户

Google 课堂测试帐户无法访问云端硬盘

Google云端硬盘服务帐户附加存储

如何通过 Google Drive .NET API v3 使用服务帐户访问 Team Drive

通过 OAuth 2.0 和私钥(即服务帐户)访问 Google Contacts Api

如何使用API Explorer作为服务帐户?