Как удалить / загрузить файлы с панели инструментов Firebase, которые были загружены с помощью Firebase-Admin SDK? - PullRequest
0 голосов
/ 27 декабря 2018

Я загрузил файлы, используя admin-sdk для firebase, но, похоже, я не могу загрузить / удалить их с помощью панели инструментов firebase.Это не обязательно проблема, так как я не буду управлять своими файлами таким образом, но это кажется странным.

// Initialization
import * as firebase from 'firebase-admin';
const serviceAccount = require('../firebase_creds');
firebase.initializeApp({
  credential: firebase.credential.cert(serviceAccount),
  databaseURL: 'https://my-databse.firebaseio.com',
  storageBucket: 'gs://my-bucket.appspot.com'
});

export const uploadImages = async () => {
  const bucket = firebase.storage().bucket();
  try {
    const file = await bucket.upload('./images/1-Website.jpg', {
      public: true,
      destination: `12345/displayPicture/1-Website.jpg`
    });
    console.log(file);
  } catch (error) {
    console.log(error);
  }
};

Ответы [ 2 ]

0 голосов
/ 27 декабря 2018

Я нашел причину этой проблемы в документации Google.

Краткое резюме: «после применения предопределенного ACL publicRead к объекту вы теряете разрешение OWNER и, следовательно, больше не можете получить доступ к ACL объекта»

Внимание. Применяя предопределенный ACL-список к существующему сегменту или объекту, вы полностью заменяете существующий ACL-пакет или объект предопределенным ACL-списком.Это изменение может привести к потере доступа к списку или списку ACL объекта в некоторых случаях.Например, если вы находитесь в группе владельцев проекта, но не являетесь владельцем объекта с ACL projectPrivate, то после применения предопределенного ACL publicRead к объекту вы теряете разрешение OWNER и, следовательно, больше не можете получить доступ к ACL объекта.В этом случае вы можете использовать роль Cloud IAM storage.objectAdmin, чтобы иметь разрешение, необходимое для обновления ACL объекта и исправления изменения.

Предопределенные ACL

0 голосов
/ 27 декабря 2018

Передав predefinedAcl: 'bucketOwnerFullControl' в опции загрузки, эта проблема решается.Как обычно, документация Firebase очень расплывчата и нигде об этом не упоминается.

...