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 查看”,并提供对其文件的只读访问权限,即使对于未登录的用户也是如此。在我看来,流程将按如下方式工作:
- User_A 使用 OAuth 进行身份验证并创建一个文档,保存到他们的 google 驱动器。
- User_A 在我的应用程序中按下一个按钮,将 google 文档设置为 public 共享模式?
- 应用生成一个“查看器”link,User_A 可以与他的朋友分享。
- User_B 没有 Google 帐户,但访问“查看器 link”,我的应用程序查找适当的 google 文档(使用 API 键?因为 User_B 没有登录)
- 文档已加载到我的应用程序中以供查看。
这似乎大部分都有效;我可以使用 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 星标以跟踪此问题并帮助确定优先级。
参考:
问题:
是否可以通过未经身份验证的用户(即通过 API 密钥或其他方法访问 Google Drive 文档中的 appProperties 字段比 Oauth)?
背景:
我有一个可用作实时文档编辑器的应用程序。它通过 OAuth 验证用户并允许他们将这些文档保存到他们的 google 驱动器,然后在我的应用程序中重新打开它们(google 文件 ID 保存在我的数据库中并将文档文本加载到我的应用程序)。只要用户登录,Create()-ing 和 Get()-ing 这些文件就可以正常工作,并且我有“appProperties”字段存储几个额外的关键元数据项。
下一步,我希望允许用户将文档标记为“public 查看”,并提供对其文件的只读访问权限,即使对于未登录的用户也是如此。在我看来,流程将按如下方式工作:
- User_A 使用 OAuth 进行身份验证并创建一个文档,保存到他们的 google 驱动器。
- User_A 在我的应用程序中按下一个按钮,将 google 文档设置为 public 共享模式?
- 应用生成一个“查看器”link,User_A 可以与他的朋友分享。
- User_B 没有 Google 帐户,但访问“查看器 link”,我的应用程序查找适当的 google 文档(使用 API 键?因为 User_B 没有登录)
- 文档已加载到我的应用程序中以供查看。
这似乎大部分都有效;我可以使用 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 星标以跟踪此问题并帮助确定优先级。