首页 > 解决方案 > Google Drive Access - 服务帐户或 OAuth - 读取/写入用户文件

问题描述

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

我一直在考虑使用 Google 服务帐户进行应用程序级别的身份验证,直到我了解到服务帐户无权访问设置服务帐户的用户的 Google Drive 文件夹。这种方式违背了目的,因为它是我希望访问的客户的 Google Drive 帐户。

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

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

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

标签: google-apigoogle-drive-apigoogle-oauth

解决方案


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

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

存储 RT 是更宽松的选择。您不会使用我在您引用的答案中描述的 OAuth 操场,因为这对于要求用户进行操作来说太笨拙了。相反,您需要编写自己的注册/授权服务(您可以使用 AppEngine、Lambda 等 - 所以编写和托管并不难)。


推荐阅读