我正在尝试使用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)”。
答案 0 :(得分:0)
虽然文档尚不十分清楚,但是可以在电子表格中添加行,而无需经过OAuth流程,在该流程中,应用必须征得特定用户的同意。
使用服务帐户时,该流程与使用APIKey时的流程非常相似,不同之处在于可以明确授予服务帐户写入表的权限。
之所以可行,是因为服务帐户就像一个用户,只是一个非人类的帐户。过程如下:
然后,您现在可以使用服务帐户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和Java的过程。原始HTTP / REST请求。希望这会有所帮助!