getSignedURL () в облачной функции Google создает ссылку, которая работает в течение нескольких дней, а затем возвращает «SignatureDoesNotMatch» - PullRequest
0 голосов
/ 28 марта 2019

My Firebase Storage getSignedUrl() ссылки для скачивания работают несколько дней, а затем перестают работать. Сообщение об ошибке

SignatureDoesNotMatch
The request signature we calculated does not match the signature you provided. Check your Google secret key and signing method.

Прошлым летом было долгое обсуждение этого на GitHub, но я не вижу, чтобы решение было достигнуто.

Я думаю о том, чтобы использовать getDownloadURL() с внешнего интерфейса вместо getSignedUrl() с заднего. Является ли getDownloadURL() менее безопасным, чем getSignedUrl()?

Вот мой код, который в основном скопирован из документации :

let audioType = 'mp3';
const {Storage} = require('@google-cloud/storage');
const storage = new Storage();
const bucket = storage.bucket('my-app.appspot.com');
var file = bucket.file('Audio/' + longLanguage + '/' + pronunciation + '/' + wordFileType);

  // Firebase Storage file options
  var options = {
    metadata: {
      contentType: 'audio/' + audioType,
      metadata: {
        audioType: audioType,
        longAccent: 'United_States',
        shortAccent: 'US',
        longLanguage: 'English',
        shortLanguage: 'en',
        source: 'Oxford Dictionaries',
        word: word
      }
    }
  };

  const config = {
    action: 'read',
    expires: '03-17-2025',
    content_type: 'audio/mp3'
  };

  function oedPromise() {
    return new Promise(function(resolve, reject) {
      http.get(oedAudioURL, function(response) {
        response.pipe(file.createWriteStream(options))
        .on('error', function(error) {
          console.error(error);
          reject(error);
        })
        .on('finish', function() {
          file.getSignedUrl(config, function(err, url) {
            if (err) {
              console.error(err);
              return;
            } else {
              resolve(url)
            }
          });
        });
      });
    });
  }

Ответы [ 2 ]

1 голос
/ 07 апреля 2019

Максимальная продолжительность подписанного URL-адреса в облачном хранилище Google составляет 7 дней. Но это также может быть короче. Никогда дольше. Я предполагаю, что Firebase Storage имеет такой же лимит.

0 голосов
/ 13 апреля 2019
...