1. ホーム
  2. node.js

[解決済み] Cloud Functions for FirebaseでアップロードされたファイルからダウンロードURLを取得する

2022-04-23 04:10:24

質問

Functions for FirebaseでFirebase Storageにファイルをアップロードした後、そのファイルのダウンロードURLを取得したいのですが。

私はこれを持っています。

...

return bucket
    .upload(fromFilePath, {destination: toFilePath})
    .then((err, file) => {

        // Get the download url of file

    });

オブジェクトファイルには、たくさんのパラメータがあります。という名前のものでも mediaLink . しかし、このリンクにアクセスしようとすると、このエラーが表示されます。

Anonymous users does not have storage.objects.get access to object ...

どなたか、公開ダウンロードURLを取得する方法を教えてください。

ありがとうございます。

解決方法は?

を使用して署名付きURLを生成する必要があります。 取得SignedURL を経由して Google-cloud/storage(グーグルクラウド/ストレージ NPMモジュールです。

const gcs = require('@google-cloud/storage')({keyFilename: 'service-account.json'});
// ...
const bucket = gcs.bucket(bucket);
const file = bucket.file(fileName);
return file.getSignedUrl({
  action: 'read',
  expires: '03-09-2491'
}).then(signedUrls => {
  // signedUrls[0] contains the file's public URL
});

を初期化する必要があります。 @google-cloud/storage あなたのサービスアカウントの認証情報 のように、アプリケーションのデフォルトの認証情報では十分ではありません。

アップデイト : Cloud Storage SDK は、Firebase Admin SDK からアクセスできるようになり、以下のようになりました。 ラッパーとして機能する Google-cloud/storageの周りにある。 どちらかの場合のみとなります。

  1. 特別なサービスアカウントでSDKを初期化します(通常、デフォルトではない2つ目のインスタンスを使用します)。
  2. または、サービスアカウントなしで、デフォルトのApp Engineサービスアカウントに"signBlob"パーミッションを与えることである。