Google Spreadsheet API v4使用“ApiKey”

时间:2018-01-08 05:47:35

标签: google-sheets google-spreadsheet-api

我正在尝试使用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

但是没有使用“APIKey”的正确文件。当我尝试使用“Apikey”时,它给我一个错误“未经授权(401)”。

1 个答案:

答案 0 :(得分:0)

虽然文档尚不十分清楚,但是可以在电子表格中添加行,而无需经过OAuth流程,在该流程中,应用必须征得特定用户的同意。

使用服务帐户时,该流程与使用API​​Key时的流程非常相似,不同之处在于可以明确授予服务帐户写入表的权限。

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

  • 转到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

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

我也不知道您使用的是哪种编程语言,因此我将创建JWT令牌留给读者作为练习,并且链接的文档还描述了Java,Python和Java的过程。原始HTTP / REST请求。希望这会有所帮助!