我正在本地开发一个应用程序,最终将在Go中的Google App Engine上运行。
我正在使用云文档中建议的服务帐户 key :
https://cloud.google.com/docs/authentication
Accessing private data on behalf of a service account outside Google Cloud environments
Recommendation: Service account key
这是预期的工作流程:
现在,如果管理员在以下位置使用"file":列表“尝试此API”:
https://developers.google.com/drive/api/v3/reference/files/list
使用以下查询字符串:
parents in 're89w...r9d9' and starred
然后出现加星标的文件。但是,当我的应用使用相同的字符串时:
q := "parents in '" + folderID + "' and starred "
fl, err = srvDrive.Files.List().PageSize(100).Q(q).Fields("nextPageToken, files(name)").Do()
那么fl是一个空列表;没有加星标的文件。我怀疑这与使用服务帐户有关,并且可能有一种通过某种方式模拟某些东西来解决此问题的方法,但是文档越来越深入,并且我不确定如果我弄清楚它是否会有所帮助。
我的应用程序如何查询管理员驱动器中已加星标的文件?
最佳答案
从您的问题中,我了解到您的当前情况如下。
我也有同样的情况。我认为这是错误或服务帐户的当前规范。
因为例如,当
files(name,starred)
用于fields
时,即使文件夹中存在带星号的文件,所以starred
的字段对于所有文件始终都是false
。我认为这是问题的原因。因此,在当前阶段,我认为很遗憾,无法使用服务帐户直接检索已加星标的文件列表。当您要检索已加星标的文件列表时,以下解决方法如何?
解决方法1:
在这种解决方法中,可以使用从OAuth2(而不是服务帐户)检索到的访问 token 来检索特定文件夹中的文件列表。在这种情况下,可以检索已加星标的文件列表。
解决方法2:
在这种解决方法中,使用由Google Apps脚本创建的Web应用程序检索文件列表,当golang脚本向Web应用程序请求时,将返回文件列表。在这种情况下,可以使用从服务帐户检索的访问 token 。同样,可以在不使用访问 token 的情况下使用它。在这种解决方法中,Web Apps被用作API。这样,尽管在解决方法1中,仍需要在golang脚本中使用OAuth2进程,但该解决方法可以避免这种情况,并且可以使用服务帐户。
笔记:
q := "parents in '" + folderID + "' and starred "
用作搜索查询。当我看到the official document时,似乎是'1234567' in parents
。但是,当我测试parents in '1234567'
时,我确认可以使用它。我认为可能会更改此规范。 trashed = false
中包含fields
可能是合适的。 引用:
关于go - 如何使用Google云端硬盘Api和服务帐户获取加星标的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65999019/