Я получаю сообщение об ошибке 403 SignatureDoesNotMatch при попытке загрузить URL-адрес, созданный с помощью:
file.getSignedUrl({
expires: moment()
.add(10, 'minutes')
.format()
})
Я выполнил все шаги, описанные в примере , включая добавлениесоздатель токена учетной записи службы для учетной записи службы App Engine по умолчанию, позволяющий создавать подписанные URL-адреса:
Как альтернативный подход к использованию admin
через firebase-functions
Я попытался загрузить учетные данные учетной записи службы service-account-credentials.json
и создать объект хранения gcs, как это было предложено здесь , например:
const { Storage } = require('@google-cloud/storage');
const storage = new Storage({
keyFilename: 'service-account-credentials.json',
projectId: 'project-id',
});
storage.bucket('bucket-id').getFiles({prefix: 'path/to/dir'}).then(files => files.map(file => [same code as above]));
Однако при этом все еще генерируются URL-адреса SignatureDoesNotMatch.
Я следил за проблемой github , связанной с этим вопросом, но мне не удалось найти жизнеспособное решение. Решение, указанное владельцем Firebase dev @mcdonamp в выпуске , ссылается на iam.signBlobRequest
, но я не знаю, где определено iam
, я вижу только здесь как свойствоbucket
, без метода signBlobRequest
и здесь в качестве конечной точки HTTP API.