2 回答

TA贡献1862条经验 获得超6个赞
从你的问题中,我了解到你目前的情况如下。
您想要从特定文件夹中检索具有星号的文件的文件列表。
该文件夹在您的帐户和服务帐户之间共享,您可以在 Google 云端硬盘中看到已加星标的文件。
你想用googlapis for golang来实现这一点。
我也有同样的情况。我认为这是一个错误或服务帐户的当前规范。
因为例如,当 用于 时,即使文件夹中存在带有星号的文件,字段 也始终为所有文件。我认为这就是问题的原因。files(name,starred)
fields
starred
false
所以在现阶段,我觉得很遗憾,使用服务账号无法直接检索星标文件列表。如果要检索已加星标的文件列表,以下解决方法如何?
解决方法 1:
在此变通办法中,可以使用从 OAuth2(而不是服务帐户)检索的访问令牌检索特定文件夹中的文件列表。在这种情况下,可以检索已加星标的文件列表。
解决方法 2:
在此解决方法中,使用 Google Apps 脚本创建的 Web 应用程序检索文件列表,当 golang 脚本请求 Web 应用程序时,将返回文件列表。在这种情况下,可以使用从服务帐户检索到的访问令牌。此外,可以在不使用访问令牌的情况下使用此功能。在此变通办法中,Web 应用用作 API。这样,尽管在变通办法 1 中,需要在 golang 脚本中使用 OAuth2 进程,但此变通办法可以避免这种情况,并且可以使用服务帐户。
注意:
例如,如何将其报告给Google问题跟踪器作为将来的请求?裁判
顺便说一句,在您的脚本中,用作搜索查询。当我看到官方文件时,似乎.但是,当我测试时,我确认这是可以使用的。我认为这个规范可能会改变。
q := "parents in '" + folderID + "' and starred "
'1234567' in parents
parents in '1234567'
而且,我认为在这种情况下,包括进来可能是合适的。
trashed = false
fields

TA贡献1784条经验 获得超9个赞
问题:
文件本身不加星标。文件是针对特定用户加星标的,如下所示:
已加星标:用户是否已为文件加星标。
这意味着某个帐户(#1)可以已为某个文件加星标,而另一个帐户(#2)则未加星标。因此,当使用 #1 查询文件时,将返回该文件,而使用 #2 执行此操作时,则不会返回该文件。我认为这就是这里发生的事情:您的常规(管理员)帐户已为某些文件加星标,而您的服务帐户(这是一个完全不同的帐户)尚未。starred
因此,我不认为这是Google方面的问题:服务帐户可用于返回他们已加星标的文件。我通过(1)使用服务帐户为文件加星标和(2)通过q=“starred”
查询加星标的文件来检查情况。已返回加星标的文件。
溶液:
如果要使用服务帐户检索由常规用户加星标的文件,则应授予服务帐户域范围的权限,并使用它来模拟用户。
如果您想避免域范围的委派,Tanaike提供的解决方法#2也可能是一个不错的选择。
更新:
您正在使用 Go,遗憾的是,相应的 API 库尚未包含使用服务帐户模拟域用户的功能。以下是来自库存储库的相关功能请求:支持模拟 gSuite API 的管理员用户(请注意,已实现的其他 FR 指的是不同的功能)。
同时,我可以尝试在不使用库的情况下完成模拟过程。有关总体指南,请参阅准备进行授权的 API 调用:HTTP/REST。
- 2 回答
- 0 关注
- 214 浏览
添加回答
举报