Облачная функция Google Cloud со знаком дает 403 SignatureDoesNotMatch - PullRequest
0 голосов
/ 17 января 2019

Я получаю сообщение об ошибке 403 SignatureDoesNotMatch при попытке загрузить URL-адрес, созданный с помощью:

file.getSignedUrl({
  expires: moment()
    .add(10, 'minutes')
    .format()
})

Я выполнил все шаги, описанные в примере , включая добавлениесоздатель токена учетной записи службы для учетной записи службы App Engine по умолчанию, позволяющий создавать подписанные URL-адреса:

enter image description here


Как альтернативный подход к использованию 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.

1 Ответ

0 голосов
/ 18 января 2019

Кажется, что, несмотря на требование документа о Content-Type заголовках необязательно, это не так. Как предложено этой SO публикацией и этой проблемы github , добавление contentType к аргументу getSignedUrl options решает проблему:

file.getSignedUrl({
  action: 'read',
  contentType: 'audio/wav',
  expires: moment()
  .add(10, 'minutes')
  .format()
})

Не забудьте также включить заголовок при запросе ресурса.

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