我正在尝试使用服务帐户对GoogleAPI执行身份验证。我已经建立了一个服务帐户,其凭据位于credentials.json
。我尝试访问一个私有工作表,在该工作表中添加了具有编辑权限的服务帐户的电子邮件地址。
这是我使用的代码:
const {
google
} = require('googleapis');
const fs = require('fs');
let scopes = ['https://www.googleapis.com/auth/spreadsheets'];
let credentials = require("./credentials.json");
const authClient = new google.auth.JWT(
credentials.client_email,
null,
credentials.private_key,
scopes);
authClient.authorize(function(err, tokens) {
if (err) {
console.log(err);
return;
} else {
authClient.setCredentials(tokens);
}
});
const sheets = google.sheets({
version: 'v4',
authClient
});
let spreadsheetId = //...
let range = //...
const request = {
spreadsheetId: spreadsheetId,
range: range
};
sheets.spreadsheets.values.get(request, function(err, response) {
if (err) {
console.log('The API returned an error: ' + err);
} else {
console.log('Result: ' + response);
}
});
我猜想API会随着时间而改变,因为许多指南显示了不同的方法,最后没有一个对我有用。 错误如下:
The API returned an error: Error: The request is missing a valid API key.
据我了解,仅对于公共表上未经身份验证的访问,仅需要一个简单的API密钥,因此我不知道为什么它甚至需要这样做。如果添加这样的API密钥,则会出现错误
The API returned an error: Error: The caller does not have permission
使用
$ npm list googleapis
`-- googleapis@52.1.0
任何帮助将不胜感激。