Nodejs googleAPI, как аутентифицировать клиента JWT только с помощью запроса GET - PullRequest
0 голосов
/ 24 марта 2019

известно, что GoogleAPI в значительной степени просто построен на GET-запросах, а модуль helper node.js googleapis, по-видимому, просто позволяет отправлять эти GET-запросы более простым способом, например:

fetch("https://www.googleapis.com/drive/v3/files/MYID/export?mimeType=text/plain",
    {
        method:"GET",
        headers: {
            'Accept-Encoding': 'gzip',
            'User-Agent': 'google-api-nodejs-client/0.7.2 (gzip)',
            Authorization:t.token_type +" "+ t.access_token,
            Accept:"application/json"
        }
    })
        .then(res => res.text())
        .then(body => console.log(body));

выполняет то же, что и их встроенный метод:

var drive = google.drive("v3");
    drive.files.export({
        auth:j,
        fileId:"1oBL8sBylvODW1Md0gjXf2UgwBHtb6aRcgyGOYr0kRvY"
    }, (e,r) => {
        if(e) console.log(e);
        else {
            console.log(r,"data:::::",r.data);
        }
    });

Итак, вопрос: когда я проверяю клиента JWT в nodejs с помощью пользовательского служебного ключа, я делаю это:

var google = require("googleapis").google,
    creds = require("./mycreds.json"),
    fetch = require("node-fetch");


    var j = new google.auth.JWT(
        creds.client_email,
        null,
        creds.private_key,
        [
            "https://www.googleapis.com/auth/drive"
        ]
    );
    console.log(google.auth.JWT, "END this");

j.authorize((r,t) => {
    doOther(t);
});

Я подозреваю, что это, как и любая другая часть API Google, с которой я сталкивался до сих пор, просто более простой способ отправить запрос GET на определенный URL с определенными заголовками (содержащий ключ авторизации).

Вопрос: что именно этот URL и заголовки необходимы для того же, что и j.authorize? Я не мог найти, где искать в ссылке.

СОВЕТ: из строки 159 в файле jwtclient.js:

createGToken() {
        if (!this.gtoken) {
            this.gtoken = new gtoken_1.GoogleToken({
                iss: this.email,
                sub: this.subject,
                scope: this.scopes,
                keyFile: this.keyFile,
                key: this.key,
                additionalClaims: this.additionalClaims
            });
        }
        return this.gtoken;
    }

все еще смотрит на gtoken_1.GoogleToken и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...