NodeJS Googleapis服务帐户身份验证

时间:2020-06-07 10:09:44

标签: node.js google-api service-accounts

我正在尝试使用服务帐户对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

任何帮助将不胜感激。

0 个答案:

没有答案