首页 > 解决方案 > googleAuth不是构造函数,google-api版本问题

问题描述

按照本指南操作 google 电子表格 - http://voidcanvas.com/node-js-googleapis-v4-spreadsheet/ 我一直收到“googleAuth 不是构造函数”错误。

在网上搜索我发现新版本的 google-auth-library 与旧语法有问题。安装 0.12.0 版本让我进入“通过访问此 URL 授权应用程序:”部分,但提供的 URL 是一个损坏的链接,上面写着:

错误:invalid_request redirect_uri 的参数值无效:无效方案:urn:ietf:wg:oauth:2.0:oob

另一方面,尝试使用 google-auth-library 的当前(更新)版本,我找到了一个修复程序,说要更改这些行

let oauth = require('google-auth-library');
...
var oauth2Client = new oauth.OAuth2(clientId, clientSecret, redirectUrl);

但它创建了“oauth.OAuth2 不是构造函数”错误。

这是在 0.12.0 运行并返回错误 URL 的原始代码。

let fs = require('fs');
let readline = require('readline');
let googleAuth = require('google-auth-library');
...
authorize(credentials) {
var clientSecret = credentials.installed.client_secret;
var clientId = credentials.installed.client_id;
var redirectUrl = credentials.installed.redirect_uris[0];
var auth = new googleAuth();
var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);

这是在更新版本 + 修复中运行的代码

 let fs = require('fs');
 let readline = require('readline');
 let oauth = require('google-auth-library'); 
 ...
 authorize(credentials) {
 var clientSecret = credentials.installed.client_secret;
 var clientId = credentials.installed.client_id;
 var redirectUrl = credentials.installed.redirect_uris[0];
 ///var auth = new googleAuth();
 var oauth2Client = new oauth.OAuth2(clientId, clientSecret, redirectUrl);

我希望结果是一个好的 URL,它返回我完成授权所需的代码,进而更新我的工作表。

标签: node.jsgoogle-sheetsgoogle-sheets-apigoogle-auth-library

解决方案


对于较新的版本,您需要使用OAuth2Client可以通过解构获得的属性。其他常见的属性是author JWT

const {OAuth2Client} = require('google-auth-library');

另请参阅https://www.npmjs.com/package/google-auth-library


推荐阅读