【发布时间】:2021-02-01 19:34:47
【问题描述】:
我正在本地开发一个应用程序,该应用程序最终将在 Go 中的 Google App Engine 上运行。
我正在使用云文档中建议的服务帐户密钥:
https://cloud.google.com/docs/authentication
代表 Google 以外的服务帐户访问私人数据 云环境
建议:服务帐号密钥
这是预期的工作流程:
- 管理员创建了一个 Drive 文件夹,该文件夹与选定的用户和服务帐户共享。
- 用户可以在该共享文件夹中创建文件。
- 管理员可以为这些文件的选择加注星标并调用应用程序。
- 该应用会在该共享文件夹中查询已加星标的文件并处理这些文件。
现在如果管理员使用文件:列表“试用此 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。我认为这是您的问题的原因。所以在当前阶段,很遗憾,无法使用服务帐户直接检索已加星标的文件列表。例如,如何将其作为未来的请求报告给 Google 问题跟踪器? -
@Tanaike。谢谢,我提出了一个问题,请随时给它加星标:issuetracker.google.com/issues/179060625
-
感谢您的回复。现在,通过包含更多信息,我提出了实现目标的解决方法。你能确认一下吗?顺便说一句,我确认了您的问题跟踪器。所以我给它加了星。作为问题跟踪器的附加信息,添加以下信息怎么样?当使用服务帐户并将
files(name,starred)用于fields时,即使文件夹中存在带星号的文件,starred的字段对于所有文件始终为false。这可能是问题的原因。 -
我认为这不是 Google 方面的问题。由服务帐户加星标的文件可以通过
Files: list返回。至少这是我正在经历的行为。
标签: go google-drive-api