3

我在将图像上传到 Firebase 存储时遇到问题。我正在使用 React Native 的 @react-native-firebase/storage 并且安装和连接似乎很好,因为我能够很好地引用图像:

const ref = firebase.storage().ref('myImage.png');

问题肯定是基于权限的,因为当我暂时删除时:

: if request.auth != null

来自 Firebase 控制台存储规则:

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

这工作得很好:

firebase.storage()
    .ref('images/test.jpg')
    .putFile(myImage[0].path)
    .then((successCb) => {
        console.log('successCb');
        console.log(successCb);
    })
    .catch((failureCb) => {
        console.log('failureCb');
        console.log(failureCb);
    });

那么如何进行身份验证以安全地使用 putFile 呢?

编辑:我正在使用“@react-native-firebase/storage”:“^6.2.0”

提前致谢!

4

3 回答 3

6

就是弗兰克!

我错误地将应用程序视为已经通过 GoogleService-Info.plist 文件进行身份验证的用户,而不是应用程序的用户需要进行身份验证。

我的修复步骤:

  1. 安装@react-native-firebase/auth

  2. 进入 Firebase 控制台的身份验证部分并启用匿名登录方法

  3. 在 componentDidMount() 中调用 firebase.auth().signInAnonymously()

    并且...终于能够成功提交 putFile 到存储!

非常感谢@FrankvanPuffelen !!

于 2020-01-03T23:56:33.020 回答
5

编辑 Firebase 存储规则以允许上传而无需安装@react-native-firebase/auth.

  1. 导航到 Firebase 控制台
  2. 在开发开放存储下的侧边栏中
  3. 打开规则选项卡
  4. 替换以下规则
rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write
    }
  }
}
  1. 并发布

完毕

于 2020-11-14T12:24:55.960 回答
0

我们可以通过两种方式解决这个问题。要么我们需要在将文件上传到数据库时对用户进行身份验证。或者,如果仅出于测试目的,我建议转到 firebase 中的存储并单击规则并将“允许读取,写入:如果 request.auth!= null”更改为“允许读取,写入:如果 request.auth ==空值”。我建议对用户进行身份验证以获取安全可靠的文件。

我希望你的问题解决了。

于 2021-04-26T12:21:30.387 回答