【问题标题】:Accessing previously created folder with oauth Google Drive使用 oauth Google Drive 访问以前创建的文件夹
【发布时间】:2020-06-26 16:48:32
【问题描述】:

我们正在构建一个应用程序,允许用户连接他们的云存储(在本例中为 gDrive)并从我们的应用程序上传文件,但他们也可以断开与它的连接并可能连接到另一个。

一个用例可能是:

用户连接到gDrive(应用创建文件夹并上传文件)> 稍后用户与应用内驱动器断开连接 > 稍后用户重新连接

问题是我们想要获取这个先前创建的文件夹并进行更改,问题是,为了让用户重新连接,他们必须重新授权,设置新令牌,因此我们不再有权访问该文件夹,而是我们的应用会自动创建一个同名的新文件夹 - 显然这不是我们想要的。

我们能想到的唯一解决方案不是在断开/连接时重新授权或增加 oauth 的范围并搜索文件夹。

我们将来会使用rClone 之类的东西,但目前我们专注于几个主要的云服务。

还有其他解决办法吗?

【问题讨论】:

  • 您能否分享您正在使用的代码的相关部分?我不明白reauthorizeno longer have access to that folder 之间的联系。
  • 不幸的是我做不到。连接是,当用户断开连接时,他们未授权访问我们的应用程序,而当他们再次连接时,这需要重新授权。这给了我们一个新的令牌,并且因为我们的范围仅限于我们创建的文件夹,我们不再可以访问它并且必须创建一个新文件夹。我们希望能够访问已经存在的那个,最好不要增加范围——这就是为什么我要问是否还有其他方法。
  • 好的,我猜你正在使用DRIVE.FILE 范围。不幸的是,我认为在这种情况下,唯一的选择是使用更强大的范围并更改应用程序工作流程,以便用户不会取消对应用程序的授权。关于另一个范围的使用,目前有一个开放的功能请求限制对用户驱动器上某个文件夹的访问,check it out
  • 想了很多,谢谢!链接也很有趣!
  • 完全同意,将您的标记为正确。谢谢!

标签: oauth-2.0 google-drive-api google-oauth


【解决方案1】:
  • 您的应用正在使用drive.file 范围,这允许它访问由应用创建或打开的文件。
  • 用户通常会断开与应用程序的连接,从而有效地取消对它的授权。因此,该应用无权访问用户上次连接到该应用时创建的文件夹。

drive.file范围的描述很清楚:

按文件访问应用程序创建或打开的文件。文件授权是按用户授予的并在用户取消对应用的授权时撤销

因此,遗憾的是,允许应用访问之前创建的文件夹的唯一两种方法是您已经勾勒的方法:

  • 使用提供更广泛访问权限的范围:在这种情况下,范围可能应该是 https://www.googleapis.com/auth/drive,因为据我了解,该应用需要写入权限。
  • 更改应用的工作流程,以便用户不会取消对应用的授权。

关于使用更广泛的范围,以下显然最近被内部化的功能请求可以提供一个可接受的解决方法,以防它被实施:

我建议您为引用的问题加注星标,以跟踪其发展并帮助确定优先级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多