我试图访问一个谷歌工作表电子表格,该表是由相同的帐户作为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"
}发布于 2020-04-27 12:35:03
这个修改怎么样?
修改点:
jwtClient来像const sheets = google.sheets({ version: "v4", auth: jwtClient })一样使用auth。我认为你出问题的原因可能是这个。--修改脚本:
当您的脚本被修改时,如下所示。
发自:
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);
});
});至:
jwtClient.authorize((err) => {
if (err) console.log(err);
});
const sheets = google.sheets({ version: "v4", auth: jwtClient });
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.data);
}
);注意:
在这次修改中,
。
https://stackoverflow.com/questions/61458745
复制相似问题