【问题标题】:Google Spreadsheet API v4 to "add a row" in spreadsheet using an "ApiKey"Google Spreadsheet API v4 使用“ApiKey”在电子表格中“添加一行”
【发布时间】:2018-06-17 02:37:36
【问题描述】:

我正在尝试使用 Google 电子表格 API v4 直接使用“ApiKey”在电子表格中“添加一行”,而不使用 OAuth 2.0。

如果我使用的是 OAuth 2.0,它会成功“添加一行”,但我的要求是使用“ApiKey”

引用此网址:https://developers.google.com/sheets/api/guides/migration#add_a_new_row_of_data

但是没有合适的文档使用“APIKey”。当我尝试使用“Apikey”时,它向我抛出了“未经授权 (401)”的错误。

【问题讨论】:

  • 你知道谷歌应用脚​​本吗?您可以为电子表格 CRUD 操作编写自己的 API/函数并部署脚本。
  • sheets.googleapis.com/v4/spreadsheets/${spreadsheet_id}/values/A1:append?valueInputOption=RAW&key=${mykey} -->我正在使用这个 url 在电子表格中添加一行 bt 它显示我 401 未经授权。 .请帮帮我。
  • 您是否授予了电子表格的写入权限?
  • 是的... bt 一次从我这边重新检查你能告诉我授予写入权限的步骤吗?
  • 按照此处给出的步骤(第一个答案)stackoverflow.com/questions/37315266/…

标签: google-sheets google-spreadsheet-api


【解决方案1】:

虽然文档并不完全清楚,但可以在电子表格中添加行,而无需通过 OAuth 流程,应用必须获得特定用户的同意。

使用服务帐户时的流程与使用 APIKey 时的流程非常相似,不同之处在于服务帐户可以被明确授权写入工作表。

之所以可行,是因为服务帐户就像一个用户,只是一个不是人类的用户。流程如下:

  • 转到 Google Cloud Console 并在您的 GCP 项目中创建一个服务帐户。 (如果您没有项目,则可能需要创建一个。)
  • 创建密钥并将其下载为 JSON 文件。 JSON 文件将包含私钥、密钥 ID、服务帐户的电子邮件地址和其他信息。将此保存在安全的地方。这是敏感数据。
  • 接下来,在您的电子表格中,将服务帐户电子邮件地址添加为具有编辑权限的用户。

之后,您现在可以使用服务帐户 client_email 和 JSON 文件中的 private_key 来创建 JWT 令牌来授权请求​​。您现在可以写入工作表,因为服务帐户是工作表中的授权编辑。

请参阅Using OAuth 2.0 to Access Google APIs - Service Accounts 了解更多信息。请注意,尽管文档听起来好像服务帐户无法访问用户数据,但在这种情况下它可以,因为我们将服务帐户添加为工作表上的编辑器。

另外,请参阅Using OAuth 2.0 for Server to Server Applications

现在,我会说您的问题表明您“需要使用 APIKey”。相反,我假设您的要求是应用程序必须能够在不提示用户进行身份验证的情况下写入工作表。如果是这种情况,那么这可以解决您的问题,但如果问题确实涉及使用 APIKey,那么唯一的方法就是让所有未经身份验证的用户可以公开写入工作表。

我也不知道您使用的是什么编程语言,所以我将把 JWT 令牌的创建留给读者作为练习,链接的文档还描述了 Java、Python 和 as一个原始的 HTTP/REST 请求。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 2016-12-28
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多