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