go - 如何使用Google云端硬盘Api和服务帐户获取加星标的文件?

标签 go google-drive-api

我正在本地开发一个应用程序,最终将在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


这是预期的工作流程:
  • 管理员创建一个Drive文件夹,该文件夹与选定的用户和服务帐户共享。
  • 用户可以在该共享文件夹中创建文件。
  • 管理员可以为这些文件加注星标并调用该应用程序。
  • 该应用程序在该共享文件夹中查询已加星标的文件并处理这些文件。

  • 现在,如果管理员在以下位置使用"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是一个空列表;没有加星标的文件。
    我怀疑这与使用服务帐户有关,并且可能有一种通过某种方式模拟某些东西来解决此问题的方法,但是文档越来越深入,并且我不确定如果我弄清楚它是否会有所帮助。
    我的应用程序如何查询管理员驱动器中已加星标的文件?

    最佳答案

    从您的问题中,我了解到您的当前情况如下。

  • 您想从特定文件夹中检索带有星号的文件的文件列表。
  • 该文件夹在您的帐户和服务帐户之间共享,您可以在Google云端硬盘中看到已加星标的文件。
  • 您想使用googlapis for golang实现此目的。

  • 我也有同样的情况。我认为这是错误或服务帐户的当前规范。
    因为例如,当files(name,starred)用于fields时,即使文件夹中存在带星号的文件,所以starred的字段对于所有文件始终都是false。我认为这是问题的原因。
    因此,在当前阶段,我认为很遗憾,无法使用服务帐户直接检索已加星标的文件列表。当您要检索已加星标的文件列表时,以下解决方法如何?
    解决方法1:
    在这种解决方法中,可以使用从OAuth2(而不是服务帐户)检索到的访问 token 来检索特定文件夹中的文件列表。在这种情况下,可以检索已加星标的文件列表。
    解决方法2:
    在这种解决方法中,使用由Google Apps脚本创建的Web应用程序检索文件列表,当golang脚本向Web应用程序请求时,将返回文件列表。在这种情况下,可以使用从服务帐户检索的访问 token 。同样,可以在不使用访问 token 的情况下使用它。在这种解决方法中,Web Apps被用作API。这样,尽管在解决方法1中,仍需要在golang脚本中使用OAuth2进程,但该解决方法可以避免这种情况,并且可以使用服务帐户。
    笔记:
  • 例如,如何将其作为将来的请求报告给Google问题跟踪器? Ref
  • 顺便说一句,在脚本中,q := "parents in '" + folderID + "' and starred "用作搜索查询。当我看到the official document时,似乎是'1234567' in parents。但是,当我测试parents in '1234567'时,我确认可以使用它。我认为可能会更改此规范。
  • 而且,我认为在这种情况下,在trashed = false中包含fields可能是合适的。

  • 引用:
  • Files: list
  • Search for files and folders
  • Web Apps
  • Taking advantage of Web Apps with Google Apps Script
  • 关于go - 如何使用Google云端硬盘Api和服务帐户获取加星标的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65999019/

    相关文章:

    Android Google DriveFile 元数据被缓存,而不是从云端获取

    json - 如果嵌套内容使用动态键,我如何在 GoLang 中解析 JSON?

    go - 我正在使用 Antlr4 创建一种语言,然后我想用它生成 LLVM IR。我是否需要手写 LLVM IR 来响应我的访问者事件?

    json - 带有 JSON 和 Golang 的无限结构

    if-statement - 换行打印执行流程

    python - Google Drive SDK - 有人知道文件属性值的最大长度吗?

    tensorflow - 如何使用已安装的 Google 驱动器中的 Tensorflow 在 Google Colab 笔记本中加载图像

    ios - 如何在不复制 Google Drive 的情况下检查 iPhone MOV 文件的捕获日期

    google-app-engine - 如何删除 Go 上应用引擎中的所有 Blob?

    ios - 通过 Google Drive API 使用 "resumable"uploadType 更新 Google Drive 中的文件