我有一个.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等 - 因此编写和托管并不困难)。