私の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)
}
});
});
});
});
}
_
短縮されたURLは、expires
フィールドを指定した日付に有効期限が切れます。
しかし、ここで見ている問題は、管理SDKのKMSキーが7日ごとに回転することです。そのため、自動プロビジョニングされたStorage()ライブラリを使用してPRESIGNEDURLを作成した場合、鍵が払い戻しされたURLを回転させると(署名に使用される鍵は無効になっていないため)。そのため、鍵の年齢に応じて、URLは7日以下で有効になります。
代わりに、管理SDKを使用しないでください。代わりに Google Cloud Storage NPMモジュール を使用して、サービスアカウントJSONで初期化します。
const storage = new Storage({keyFilename: "key.json"});
また
`const storage = new storage({信任状:require(" key.json ")});
私はこの質問に長い答えを書いた: Firebaseのためのクラウド機能でアップロードされたファイルからURLをダウンロードする 。この質問は重複としてマークできます。
[1]: https://stackoverflow.com/questions/42956250/get-download-url-from-file-uploaded-with-cloud-functions-for-firebase
_