Я продолжаю получать 403 из Firebase Storge при попытке прочитать файлы изображений - PullRequest
1 голос
/ 20 марта 2020

Мне трудно разобраться во всей токеновой части загрузок Firebase.

Я хочу просто загрузить использование аватаров, сохранить их в базе данных и затем прочитать их на стороне клиента.

const storageRef = firebase.storage().ref();
storageRef.child(`images/user-avatars/${user.uid}`).put(imageObj);

Затем в своей облачной функции я получаю новый URL-адрес следующим образом:

exports.writeFileToDatabase = functions.storage.object().onFinalize(object => {
  const bucket = defaultStorage.bucket();
  const path = object.name as string;
  const file = bucket.file(path);

  return file
    .getSignedUrl({
      action: "read",
      expires: "03-17-2100"
    })
    .then(results => {
      const url = results[0];
      const silcedPath = path.split("/");

      return db
        .collection("venues")
        .doc(silcedPath[1])
        .set({ images: FieldValue.arrayUnion(url) }, { merge: true });
    });
});

Я включил IAM в платформе API Google и добавил Cloud functions service agent в App Engine default service account.

Я чувствую, что точно такая же конфигурация работала раньше, но теперь она иногда даже не пишет новый URL, или я получаю 403, пытаясь прочитать ее. Я не могу найти какие-либо объяснения или ошибки в том, что я делаю неправильно.

РЕДАКТИРОВАТЬ: Забыл добавить этот кусок кода, но FieldValue установлен в верхней части документа как

const FieldValue = admin.firestore.FieldValue;

РЕДАКТИРОВАТЬ: Это точная ошибка, которую я получаю Failed to load resource: the server responded with a status of 403 ()

И я только что понял, когда пытался использовать эту ссылку, которая была автоматически сгенерирована вышеуказанной функцией, в качестве источника для компонента изображения:

https://storage.googleapis.com/frothin-weirdos.appspot.com/images/user_avatars/yElCIVY4bAY5g5LnoOBhqN6mDNv2?GoogleAccessId=frothin-weirdos%40appspot.gserviceaccount.com&Expires=1742169600&Signature=qSqPuuY4c5xmdnpvfZh39Pw3Vyu2B%2FbGMD1rQwHDBUZTAnKwP11MaOFQt%2BTV53krkIgvJgQT0Xl3UUxkngmW9785fUri75SSPoBk0z4DKyZnEBLxgTGRE8MzmXadQ%2BHDJ3rSI8IkkoomdnANpLsPN9oySshZ1h4BfOBvAmK0hQ4Gge1glH7qhxFjVWfX3tovZoL8e2smhuCRXxDsZtJh0ihbIeZUEnX8lGic%2B9IT6y4OskS2ZlrZNjvM10hcEesoPdHsT4oCvfhCNbUcJcueRKfsWlDCd9m6qmf42WVOc7UI0nE0oEvysMutWY971GVRKTLwIXRnTLSNOr6fSvJE3Q%3D%3D

...