Google Drive API通过API密钥获取AppProperty 这可能是一个错误:我提交了一个错误:参考:

问题描述

问题:

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

背景:

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

下一步,我希望允许用户将文档标记为“公共视图”,并为他们的文件提供只读访问权限,即使对于未登录用户也是如此。在我看来,流程如下:

  1. User_A通过OAuth进行身份验证并创建一个文档,并保存到其Google驱动器中。
  2. User_A按下我应用程序中的按钮,该按钮会将google文档设置为公共共享模式吗?
  3. App生成一个“查看器”链接,User_A可以与他的朋友共享。
  4. User_B没有Google帐户,但访问“查看者链接”,我的应用程序查找了适当的google文档(使用API​​密钥?因为User_B未登录
  5. 文档已加载到我的应用中以供查看。

这似乎大部分有效;我可以使用API​​密钥很好地读取文件元数据,甚至可以获取文件内容旁注:,考虑到google drive api page上的引号,为什么我们完全需要API密钥:“注意:授权 可选 。”

但是,使用API​​密钥时,“ appProperties”字段始终返回空!

编辑:进一步搜索后,我感到更加困惑。我能找到的最接近的答案是来自这个related question的stackoverflow:

这很简单。 appPropperties 一个私有字段,并且仅在添加该应用程序的应用程序中可用。

基于此,看来Google云端硬盘正在将来自我的应用API密钥的请求和来自我的应用上的OAuth用户的请求视为两个单独的应用

此外,我最终希望允许用户一个用户拥有的单个文档上进行协作。因此,他们不仅可以提供只读的“查看”链接,还可以生成“编辑者邀请”链接,该链接将允许将经过身份验证的用户(User_B现在获得一个Google帐户)添加为授权的协作者(但不能同时进行编辑)在原始(User_A)文档上。那有可能吗?

请注意,我正在使用Node.js谷歌api。

解决方法

这可能是一个错误:

appProperties是附加到文件的特定于应用程序的属性。通过此应用进行的任何通话都应该可以访问它们。因此,我认为使用API​​密钥从此应用程序进行的调用应该能够检索这些属性。

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

我提交了一个错误:

研究了这个问题之后,我认为这可能是一个错误。因此,我决定在问题跟踪工具上提交一个错误:

对于受此影响的任何人,我建议单击左上角的星号,以便跟踪并帮助确定优先级。

参考: