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)
}
});
});
});
});
}