如何授予我的应用访问公开共享的Google云端硬盘文件的权限

问题描述

我正在编写一个下载公开共享的Google云端硬盘文件的应用程序。我的应用程序已经知道需要下载的文件的ID。我可以通过以下三种方式来做到这一点,但都不令人满意:

1。)使用URL https://drive.google.com/uc?id=<fileID>&export=download下载文件是可行的,但是由于没有经过验证就发送了请求,因此受到严格的速率限制限制。

2。)使用https://www.googleapis.com/auth/drive.file身份验证下载文件不起作用。这是因为documentation说它仅提供对“由应用程序创建或打开的文件”的访问。

3。)使用https://www.googleapis.com/auth/drive身份验证下载文件是可行的(“ drive.file”情况下无需进行任何其他代码修改)。由于使用此范围的应用程序需要进行安全评估,因此我无法使用此选项。

前进的唯一途径似乎是使用“ drive.file”身份验证,其中这些文件由应用程序打开。我应该怎么做?我认为Picker API是从应用程序内部执行此操作的预期方式,但我看不到支持按特定文件ID进行过滤,因此我希望使用不需要用户输入的解决方案,尤其是因为选项(1)和(3)不需要用户输入。

(作为旁注,此安全策略背后的逻辑对我而言没有意义。如果由于安全/身份验证的考虑而无法执行(2),则(1)应该无法实现。如果(2 )由于存在速率限制而无法执行,那么(3)就不可能实现。有人告诉我这是预期的行为。)

解决方法

我了解您正在开发一个网络应用程序,该应用程序将下载公共共享的云端硬盘文件。如果我的假设是正确的,那么您只需要实现OAuth 2.0协议即可。您可以遵循basic steps作为参考。 Here是有关Web应用程序的更深入的指南。如果您对此方法有疑问,请问我任何问题。


更新

根据Google的IssueTracker答案,这是预期的行为。也就是说,您需要先在应用中打开公共文件,然后才能下载该文件。