我是新手的防火墙工具,我是跟随一个教程视频,以创建一个应用程序与反应和防火墙。因为我上传jpg或png的图片时出错了,所以我想知道firebase和我的应用程序是否相连。在视频中,使用了版本7的firebase,我安装了9.6.8版本。我在谷歌上搜索了如何编写功能与在第7版中编写的代码相同的版本9代码,但仍然不起作用。我猜我的应用程序没有正确地连接到firebase,因为我读到了一个错误。错误来自浏览器的控制台。
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文件
{
"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"
]
}
}这是一个用于防火墙的配置文件。
// 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 };上传图片时
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;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;发布于 2022-03-11 03:57:47
只需访问给定的图像url:https://firebasestorage.googleapis.com/v0/b/clone-netninja-firegram.appspot.com/o?name=ssc.jpg。很明显,您的权限被拒绝了,错误:
{
"error": {
"code": 403,
"message": "Permission denied."
}
}有一些可能的原因,您可能会遇到这个403错误。
此外,正如@DazWilkin所述,我们鼓励您使用一个关于如何为您的项目这里初始化Firebase的最终教程。对于Firebase存储,可以从这里开始。
https://stackoverflow.com/questions/71431958
复制相似问题