【发布时间】:2020-04-27 12:18:02
【问题描述】:
我正在尝试访问 google 表格电子表格,该表格与 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 Token 的格式为:-
{
access_token: "<long_key>",
token_type: "Bearer",
expiry_date: 1587993215000,
id_token: undefined,
refresh_token: "jwt-placeholder"
}
【问题讨论】:
标签: javascript node.js google-sheets google-api