API密钥和已发现的Google工作表功能

时间:2018-01-23 23:37:55

标签: authentication google-api google-sheets-api api-key

这个问题是关于在使用Python写入Google表格时使用API​​密钥进行身份验证。在Getting Started示例之后,我发现"发现"使用URL的API:

service = discovery.build('sheets', 'v4', discoveryServiceUrl=
    'https://sheets.googleapis.com/$discovery/rest?version=v4',
    developerKey=APIKEY) 

以这种方式传递API密钥似乎有效(它不会引发任何异常。)之后,我尝试使用batchUpdate更新电子表格:

service.spreadsheets().batchUpdate(spreadsheetId=SHEETID,
    body={'requests': requests}).execute()

这会抛出401 HTTP错误:"请求缺少必需的身份验证凭据。"其他功能如values().clear()会导致相同的错误。

如何将API密钥传递给已发现的Python函数?

1 个答案:

答案 0 :(得分:2)

我认为您的service是正确的。问题是使用POST和PUT方法的Sheets API不能使用API​​密钥。要使用它们,请使用OAuth2的访问令牌。我根据自己的经历知道这一点。虽然当时我曾找过关于此的文件,但我找不到它。对不起。

另一方面,您可以使用Sheets API使用API​​密钥进行GET方法。例如,您可以通过以下示例使用API​​密钥检索值。要使用此功能,请分享电子表格。如果不共享电子表格,"来电者没有权限"退回。如果没有使用API​​密钥,"请求缺少有效的API密钥"退回。这表示需要API密钥。

service = discovery.build('sheets', 'v4', discoveryServiceUrl=
    'https://sheets.googleapis.com/$discovery/rest?version=v4',
    developerKey=APIKEY)
res = service.spreadsheets().values().get(spreadsheetId=SHEETID, range='sheet1!A1:A1').execute()

如果这对您没用,我误解了您的问题,我很抱歉。