известно, что 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 и т. Д.