Google Drive API 使用 API Key 获取 AppProperties

Google Drive API get AppProperties with API Key

问题:

是否可以通过未经身份验证的用户(即通过 API 密钥或其他方法访问 Google Drive 文档中的 appProperties 字段比 Oauth)?

背景:

我有一个可用作实时文档编辑器的应用程序。它通过 OAuth 验证用户并允许他们将这些文档保存到他们的 google 驱动器,然后在我的应用程序中重新打开它们(google 文件 ID 保存在我的数据库中并将文档文本加载到我的应用程序)。只要用户登录,Create()-ing 和 Get()-ing 这些文件就可以正常工作,并且我有“appProperties”字段存储几个额外的关键元数据项。

下一步,我希望允许用户将文档标记为“public 查看”,并提供对其文件的只读访问权限,即使对于未登录的用户也是如此。在我看来,流程将按如下方式工作:

  1. User_A 使用 OAuth 进行身份验证并创建一个文档,保存到他们的 google 驱动器。
  2. User_A 在我的应用程序中按下一个按钮,将 google 文档设置为 public 共享模式?
  3. 应用生成一个“查看器”link,User_A 可以与他的朋友分享。
  4. User_B 没有 Google 帐户,但访问“查看器 link”,我的应用程序查找适当的 google 文档(使用 API 键?因为 User_B 没有登录)
  5. 文档已加载到我的应用程序中以供查看。

这似乎大部分都有效;我可以使用 API 键读取文件元数据,甚至可以获取文件内容。 旁注: 为什么我们需要 API 密钥,鉴于 google drive api page 上的引述:“注意:授权 可选."

但是,使用 API 键时,“appProperties”字段总是 returns 为空!

编辑: 进一步搜索后,我更加困惑了。我能找到的最接近的答案来自 Whosebug 上的 related question

It's very simple. appPropperties is a private field and is available only to the application that added it.

基于此,似乎 Google Drive 正在将来自我的应用程序的请求 API 密钥和 OAuth 用户在我的应用程序上的请求视为 两个独立的应用程序?

此外,我最终希望允许用户协作处理一个用户拥有的单个文档。因此,他们不仅可以提供只读“视图”link,还可以生成“编辑邀请”link,允许经过身份验证的用户(User_B 获得 google帐户)添加为原始(User_A's)文档的授权协作者(但不是同时编辑)。这可能吗?

注意我使用的是 Node.js google api.

这可能是一个错误:

appProperties 是附加到文件的 app-specific 属性。来自此应用的任何呼叫都应该能够访问它们。因此,我认为使用 API 键从此应用调用应该能够检索这些属性。

我可以重现此行为:appProperties 在使用 OAuth 时会被填充,但在使用 API 密钥时不会被填充,即使两者都是从同一个 GCP 项目创建的。

我提交了一个错误:

经过研究这个问题,我认为这可能是一个错误。因此,我决定在 Issue Tracker 上提交错误:

对于受此影响的任何人,我建议单击 top-left 星标以跟踪此问题并帮助确定优先级。

参考: