首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不确定firebase是否连接到我的应用程序并正常工作

不确定firebase是否连接到我的应用程序并正常工作
EN

Stack Overflow用户
提问于 2022-03-10 23:25:45
回答 1查看 53关注 0票数 0

我是新手的防火墙工具,我是跟随一个教程视频,以创建一个应用程序与反应和防火墙。因为我上传jpg或png的图片时出错了,所以我想知道firebase和我的应用程序是否相连。在视频中,使用了版本7的firebase,我安装了9.6.8版本。我在谷歌上搜索了如何编写功能与在第7版中编写的代码相同的版本9代码,但仍然不起作用。我猜我的应用程序没有正确地连接到firebase,因为我读到了一个错误。错误来自浏览器的控制台。

代码语言:javascript
复制
0 null
ProgressBar.jsx:6 
0 null
connection.ts:81          
POST https://firebasestorage.googleapis.com/v0/b/clone-netninja-firegram.appspot.com/o?name=ssc.jpg 403
send @ connection.ts:81
ProgressBar.jsx:6 0 null
ProgressBar.jsx:6 0 null

我会去谷歌更多,但我希望有人能解决这个错误。下面是我认为与错误相关的代码。

Package.json文件

代码语言:javascript
复制
{
  "name": "firegram",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.5.0",
    "@testing-library/user-event": "^7.2.1",
    "firebase": "^9.6.8",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-scripts": "3.4.1"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

这是一个用于防火墙的配置文件。

代码语言:javascript
复制
// import * as firebase from 'firebase/app'
import 'firebase/storage';
// import 'firebase/firestore';
//to use firebase app
// import firebase from 'firebase/app'; //older version
import firebase from 'firebase/compat/app'; //v9

//to use auth
// import 'firebase/auth'; //older version
import 'firebase/compat/auth'; //v9

//to use firestore
// import 'firebase/firestore'; //Older Version
import 'firebase/compat/firestore'; //v9
import 'firebase/compat/storage'; //v9
// Your web app's Firebase configuration
const firebaseConfig = { [[REDACTED]] };

// Initialize Firebase
// const app = initializeApp(firebaseConfig);
firebase.initializeApp(firebaseConfig);

// Initialize two services
const projectStorage = firebase.storage();
const projectFirestore = firebase.firestore();

export { projectStorage, projectFirestore };

上传图片时

代码语言:javascript
复制
import React from 'react';
import useStorage from '../hooks/useStorage';

const ProgressBar = ({ file, setFile }) => {
  const { url, progress } = useStorage(file);
  console.log(progress, url)
  return <div className='progress-bar'>ProgressBar</div>;
};

export default ProgressBar;
代码语言:javascript
复制
import { useState, useEffect } from 'react';
import { projectStorage } from '../firebase/config';

const useStorage = (file) => {
  const [progress, setProgress] = useState(0);
  const [err, setErr] = useState(null);
  const [url, setUrl] = useState(null);

  useEffect(() => {
    // references
    const storageRef = projectStorage.ref(file.name);

    storageRef.put(file).on('state_changed', (snap) => {
      let percentage = (snap.bytesTransferred / snap.totalBytes) * 100;
      setProgress(percentage);

    }, (err) => {
      setErr(err)
    }, async () => {
      const url = await storageRef.getDownloadURL();
      setUrl(url)
    });
  }, [file])

  return { progress, url, err }
}

export default useStorage;
EN

回答 1

Stack Overflow用户

发布于 2022-03-11 03:57:47

只需访问给定的图像url:https://firebasestorage.googleapis.com/v0/b/clone-netninja-firegram.appspot.com/o?name=ssc.jpg。很明显,您的权限被拒绝了,错误:

代码语言:javascript
复制
{
  "error": {
    "code": 403,
    "message": "Permission denied."
  }
}

有一些可能的原因,您可能会遇到这个403错误。

  1. 如果尚未配置Firebase存储规则,请执行以下操作。默认情况下,Storage希望上载用户通过身份验证。如果您仍然处于项目的测试阶段,您可以通过在存储>规则中编写这些规则来绕过这些测试阶段: 服务firebase.storage { match /b/{bucket}/o { match /{allPaths=**} {允许读、写:如果request.auth == null;} 如果准备部署到生产中,则可能需要检查此文档以配置规则。
  2. 如果您上传一个具有相同文件名和扩展名的新图像,它将覆盖/替换旧图像并为其生成一个新标记,从而使旧URL过时。您应该为上传的图像生成一个唯一的文件名,然后它应该是固定的。

此外,正如@DazWilkin所述,我们鼓励您使用一个关于如何为您的项目这里初始化Firebase的最终教程。对于Firebase存储,可以从这里开始。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71431958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档