googleAuth не является конструктором, проблема с версией google-api

Следуя этому руководству по работе с электронными таблицами Google - http://voidcanvas.com/node-js-googleapis-v4-spreadsheet/ я получаю сообщение об ошибке "googleAuth is not constructor".

Выполняя поиск в Интернете, я обнаружил, что в новой версии 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, который возвращает код, необходимый для завершения авторизации, и, в свою очередь, обновляет мой лист.

1 ответ

Для более новых версий вам нужно использовать OAuth2Client собственность, которую вы можете получить с разрушением. Другие общие свойства auth или же JWT:

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

Смотрите также https://www.npmjs.com/package/google-auth-library

Другие вопросы по тегам