getSignedUrl при использовании облачных функций - PullRequest
0 голосов
/ 11 июля 2020

Я пытаюсь получить URL-адрес изображения, чтобы передать его как src в моем html. Я создал функции и хотел бы в ответ отправить URL-адрес. Я пробовал следующее, но продолжаю получать

Ошибка: невозможно подписать данные без client_email.

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';

export const getPicURL = functions.https.onRequest(
    (request, response) => {
        const storageBucket = admin
            .storage()
            .bucket('gs://my-app.appspot.com');

        const fileName = 'my-app/pic1.jpg';
        const tomorrow = new Date(
            new Date().getTime() + 24 * 60 * 60 * 1000
        );

        const signedURL = storageBucket
            .file(fileName)
            .getSignedUrl({ action: 'read', expires: tomorrow });

        signedURL
            .then((data) => {
                response.send(data[0]);
            })
            .catch((err) => {
                console.log('My Error', err);
                response.sendStatus(500).send(err);
            });
    }
);

Мне кажется, что мне не хватает шага настройки, но я не Не знаю, куда добавить эти свойства

1 Ответ

1 голос
/ 11 июля 2020

Проблема, с которой я столкнулся, связана с сервисным аккаунтом. Я не инициализировал приложение с правильной конфигурацией. Подробности можно найти в https://console.firebase.google.com/ >> Project >> Settings >> Service Account >> Firebase Admin SDK

firebase console

firebase admin sdk

Вместо admin.initializeApp(); нам нужно сделать следующее

var admin = require("firebase-admin");

var serviceAccount = require("path/to/serviceAccountKey.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "https://my-app.firebaseio.com"
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...