Для локальной разработки большинство клиентских библиотек Google настроено на использование переменной среды GOOGLE_APPLICATION_CREDENTIALS
, чтобы найти учетные данные для используемой учетной записи службы, а затем аутентифицировать эту библиотеку. При развертывании в GCP они также не требуют никакой ручной аутентификации в коде, а вместо этого используют свою среду для аутентификации за кулисами. Это означает, что большинство клиентских библиотек, например BigQuery, Cloud Storage и т. Д. c, просто работают в облачных функциях, не требуя никакого кода для аутентификации. Однако клиентская библиотека googleapis Nodejs не использует GOOGLE_APPLICATION_CREDENTIALS
и, по-видимому, требует ручной аутентификации в коде. Ниже приведен минимальный пример того, как я делаю это локально. Как можно запустить этот код в облачной функции Google без необходимости загружать учетные данные учетной записи службы в облачную функцию?
const { google } = require("googleapis");
const key = require("service_account_credentials.json");
const client = new google.auth.JWT(key.client_email, null, key.private_key, [
"https://www.googleapis.com/auth/spreadsheets",
]);
client.authorize(function (err, tokens) {
const gsapi = google.sheets({ version: "v4", auth: client });
const opt = {
spreadsheetId: "spreadsheetId",
range: "Sheet1!A:T",
};
gsapi.spreadsheets.values.get(opt).then(res => console.log(res));
});