Я позвонил по Hosting API, ссылаясь на Развертывание на вашем сайте с использованием Hosting REST API , но я получил следующий ответ:
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
Код:
const { google } = require("googleapis");
var key = require('./service-account.json');
var jwtClient = new google.auth.JWT(
key.client_email,
null,
key.private_key,
"https://www.googleapis.com/auth/firebase.hosting",
null
);
jwtClient.authorize(function(err, tokens) {
if (err) {
console.error(err);
return;
}
console.log(tokens.access_token);
});
Оболочка:
$ node main.js
ya29.c.Elp0...
$ curl -H "Content-Type: application/json" \
-H "Authorization: Bearer ya29.c.Elp0..." \
-d '{
"config": {
"headers": [{
"glob": "**",
"headers": {
"Cache-Control": "max-age=1800"
}
}]
}
}' \
https://firebasehosting.googleapis.com/v1beta1/sites/[project-id]/versions
{
"error": {
"code": 403,
"message": "The caller does not have permission",
"status": "PERMISSION_DENIED"
}
}
Идентификатор проекта service-account.json и идентификатор проекта в конечной точке API совпадают.
С другой стороны, я получил только успешный ответ, когда releases.list метод:
$ curl -H "Authorization: Bearer ya29.c.Elp0..." \
https://firebasehosting.googleapis.com/v1beta1/sites/[project-id]/releases
{
"releases": [
...
]
}
Любые советы о том, как решить эту проблему?
Спасибо.
Обновление:
Область действия была неправильной.
В документе область авторизации относится к firebase.hosting, firebase и cloud-platform, но я получил только успешный ответ при использовании https://www.googleapis.com/auth/cloud-platform
.