Я изменяю свою инициализацию на код ниже, чтобы решить необработанный отказ. Перейдите в раздел «Учетные записи служб» в разделе «Настройки проекта» в своем проекте Firebase и сгенерируйте новый закрытый ключ в Firebase Admin SDK.

я проблемы с получением URL-адреса для загрузки в функции Firebase после сохранения изображения в облачном хранилище. Ниже моя функция firebase http в машинописном тексте для сохранения строки base64 в формате jpeg в облачном хранилище firebase. когда я регистрирую результат, он всегда пуст. Я перехожу по этой ссылке, чтобы получить ссылку для скачивания "Получить публичный URL из файла, загруженного с помощью firebase-adminMsgstr "Но это дает мне следующую ошибку:"SigningError: API Identity and Access Management (IAM) ранее не использовался в проекте 81673989436 или отключен.«И не смог найти простой пример для подражания. Мой план состоит в том, чтобы обновить мою таблицу Firestore, после загрузки в облачное хранилище.

export const publishImage = functions.https.onRequest((req, res) => {
// Convert the base64 string back to an image to upload into the Google 
// Cloud Storage bucket
const base64EncodedImageString=req.body.image.replace(/^data:image\/jpeg;base64,/, "");
const mimeType = 'image/jpeg';
const randomFileName = crypto.randomBytes(16).toString('hex') + '.jpeg';    
const imageBuffer = new Buffer(base64EncodedImageString, 'base64');

const bucket = admin.storage().bucket();

// Upload the image to the bucket
const file = bucket.file('images/' + randomFileName);
file.save(imageBuffer, {
    metadata: { contentType: mimeType },
}).then(result => {
    console.log(result);
    file.makePublic();
    file.getSignedUrl({
        action: 'read',
        expires: '03-09-2491'
    }).then(urls => {
        console.log(urls[0]);
    })
});
return res.status(200).send("NOT WORKING");    
})

Ошибка как следует в консоли Firebase. Даже с ошибкой я могу сохранить изображение в памяти.

SigningError: Разрешение iam.serviceAccounts.signBlob требуется для выполнения этой операции над учетной записью службы projects/vmsystem-4aa54/serviceAccounts/[email protected]. по адресу /user_code/node_modules/@google-cloud/storage/src/file.js:1715:16 at Request._callback (/user_code/node_modules/@google-cloud/storage/node_modules/google-auto-auth/index.js : 356: 9) в Request.self.callback (/user_code/node_modules/@google-cloud/storage/node_modules/request/request.js:186:22) в emitTwo (events.js: 106: 13) по запросу. испустить (events.js: 191: 7) по запросу. (/user_code/node_modules/@google-cloud/storage/node_modules/request/request.js:1163:10) в emitOne (events.js: 96: 13) в Request.emit (events.js: 188: 7) в IncomingMessage. (/user_code/node_modules/@google-cloud/storage/node_modules/request/request.js:1085:12) в IncomingMessage.g (events.js: 292: 16)

Как я могу получить ссылку для скачивания?

Я запутался. Теперь я застрял в обновлении функции после изменений. Ниже моя инициализация для администратора.

 import * as admin from 'firebase-admin';
 const serviceAccount = require('./../service_account.json');

 try {   
 // admin.initializeApp(functions.config().firebase); // initial
 admin.initializeApp({
     credential: admin.credential.cert(serviceAccount),
     databaseURL: "https://vmsystem-4aa54.firebaseio.com"
 });
 } catch(e) {}
 import * as simpletest from './simpletest';
 export const testsomething = simpletest.helloWorld;

Ответы на вопрос(2)

Ваш ответ на вопрос