Я пытаюсь получить доступ к электронной таблице Google Sheets, которая принадлежит той же учетной записи, что и ключ API. Я использую JWT, поскольку во время взаимодействия пользователя нет.
Ниже приведена минимальная реализация для получения содержимого листа.
Всегда происходит сбой при TypeError: authClient.request is not a function
Мне кажется, что токен авторизации успешно создан.
const fs = require('fs');
const { google } = require('googleapis');
fs.readFile('./<credentials>.json','utf-8',(e,content) => {
if ( e ) return console.log('error',e);
authorize(JSON.parse(content))
});
function authorize(credentials) {
let jwtClient = new google.auth.JWT(
credentials.client_email,
null,
credentials.private_key,
['https://www.googleapis.com/auth/spreadsheets.readonly']
)
jwtClient.authorize((e,auth) => {
if ( e ) return console.log('authorize error',e);
const sheets = google.sheets({version: 'v4', auth });
sheets.spreadsheets.values.get({
spreadsheetId: '<sheet_id>',
range: 'Class Data!A1:E20',
},(err,res) => {
if ( err ) return console.log('SHEETS err',err);
console.log('SHEETS res',res);
});
});
};
Ошибка, о которой сообщают (полностью), последовательно ...
SHEETS err TypeError: authClient.request is not a function
at /Users/web7/google-sheets/node_modules/googleapis-common/build/src/apirequest.js:238:31
at Generator.next (<anonymous>)
at /Users/web7/google-sheets/node_modules/googleapis-common/build/src/apirequest.js:19:71
at new Promise (<anonymous>)
at __awaiter (/Users/web7/google-sheets/node_modules/googleapis-common/build/src/apirequest.js:15:12)
at createAPIRequestAsync (/Users/web7/google-sheets/node_modules/googleapis-common/build/src/apirequest.js:56:12)
at Object.createAPIRequest (/Users/web7/google-sheets/node_modules/googleapis-common/build/src/apirequest.js:48:9)
at Resource$Spreadsheets$Values.get (/Users/web7/google-sheets/node_modules/googleapis/build/src/apis/sheets/v4.js:573:37)
at jwtClient.authorize (/Users/web7/google-sheets/Server.js:25:36)
at authorizeAsync.then.r (/Users/web7/google-sheets/node_modules/google-auth-library/build/src/auth/jwtclient.js:117:45)
Auth Токен имеет вид: -
{
access_token: "<long_key>",
token_type: "Bearer",
expiry_date: 1587993215000,
id_token: undefined,
refresh_token: "jwt-placeholder"
}