我正在尝试使用 Google Spreadsheet API v4 直接使用“ApiKey”在电子表格中“添加行”,而不使用 OAuth 2.0。
如果我使用 OAuth 2.0,它成功“添加行”,但我的要求是使用“ApiKey”
参考了这个网址:https://developers.google.com/sheets/api/guides/migration#add_a_new_row_of_data https://developers.google.com/sheets/api/guides/migration#add_a_new_row_of_data
但没有使用“APIKey”的正确文档。当我尝试使用“Apikey”时,它向我抛出“未经授权(401)”的错误。
虽然文档并不完全清楚,但可以将行添加到电子表格,而无需通过 OAuth 流程,其中应用程序必须获得特定用户的同意。
使用服务帐户时的流程与使用 APIKey 时的流程非常相似,只是可以向服务帐户授予写入工作表的显式授权。
这是有效的,因为服务帐户就像一个用户,只是一个非人类的用户。流程如下:
- 转到 Google Cloud Console 并在您的 GCP 项目中创建一个服务帐号。 (如果您没有项目,则可能需要创建一个。)
- 创建密钥并将其下载为 JSON 文件。 JSON 文件将包含私钥、密钥 ID、服务帐户的电子邮件地址以及其他信息。将其保存在安全的地方。这是敏感数据。
- 接下来,在电子表格中,将服务帐户电子邮件地址添加为具有编辑权限的用户。
之后,您现在可以使用服务帐户 client_email 和 JSON 文件中的 private_key 来创建 JWT 令牌来授权请求。您现在可以写入工作表,因为服务帐户是工作表中的授权编辑者。
See 使用 OAuth 2.0 访问 Google API - 服务帐户 https://developers.google.com/identity/protocols/OAuth2#serviceaccount了解更多信息。请注意,虽然文档听起来服务帐户无法访问用户数据,但在这种情况下可以,因为我们将服务帐户添加为工作表上的编辑器。
另请参阅将 OAuth 2.0 用于服务器到服务器应用程序 https://developers.google.com/identity/protocols/OAuth2ServiceAccount.
现在,我想说你的问题表明你“需要使用 APIKey”。相反,我假设您的要求是应用程序必须能够写入工作表而不提示用户进行身份验证。如果是这种情况,那么这可以解决您的问题,但如果问题确实涉及使用 APIKey,那么唯一的方法就是使该表对所有未经身份验证的用户公开可写。
我也不知道您使用的是什么编程语言,因此我将把 JWT 令牌的创建作为练习留给读者,链接的文档还以 Java、Python 和原始 HTTP 的形式描述了该过程/休息请求。希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)