Как я могу создать «URL для загрузки» с токеном, используя API управления, и это то, что я хочу? - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь создать утилиту администратора Firebase, которую можно использовать для загрузки файлов в хранилище Firebase, а затем вернуть долгоживущий URL-адрес, который я могу сохранить в БД Firebase Realtime для доступа к этому файлу.

Полагаю, что я могу сделать это в консоли Firebase, перейдя в консоль моего проекта, щелкнув Storage слева, щелкнув Upload File. Как только файл загружен, я могу получить URL-адрес, выбрав файл в списке, чтобы открыть правую информационную панель, а затем развернув раздел File Location.

В этом разделе есть Download URL, который представляется долгоживущим, но отзывным URL-адресом, содержащим токен некоторого типа. Безопасно ли хранить этот URL в БД для длительного хранения? Похоже, это тот же URL, который возвращается из файла upload api , который, как показал другой Google Codelab (для Flutter), хранится в базе данных реального времени.

Однако я не могу понять, как создать URL-адрес такого типа из API управления хранилищем данных Firebase . Я использую NodeJS, но он должен применяться ко всем версиям API AFAIK. Я могу найти только вызов getSignedUrl, который, по-видимому, не возвращает тот же URL, и кажется ограниченным по времени и содержит ссылку на учетную запись службы ... не то, что я хочу сохранить в базе данных.

let bucket = admin.storage().bucket();
bucket.upload('innovation3.jpeg', {destination: 'image_assets/innovation3.jpeg'},
  function(err, file) {
    file.getSignedUrl({action: 'read'},
    function(err, url) {
      console.log('Url: ' + url);
    })
  });

Можно ли получить этот URL-адрес из API управления или мне нужно использовать какой-то другой метод. Что рекомендуется?

1 Ответ

0 голосов
/ 08 мая 2018

Подписанные URL-адреса, созданные с помощью Firebase Admin SDK (при поддержке Cloud Storage SDK), отличаются от URL-адресов загрузки, созданных клиентскими SDK Firebase. Они служат одному и тому же общему назначению, но вы можете ожидать, что они будут отличаться друг от друга. Они оба безопасны для долгосрочного хранения, за исключением того, что вы должны знать, что подписанные URL имеют дату истечения срока действия, которую вы не указали в своем звонке. В этом случае, я не знаю, каким будет эффективное истечение срока действия.

Каждый вызов getSignedUrl будет генерировать новый URL. Не один файл уникален для файла.

...