Firebase 错误:未进行身份验证/配置。发生内部错误
你知道为什么我在React Native和Firebase中单击“通过电子邮件和密码注册”时会遇到这个问题吗Firebase 错误:未进行身份验证/配置。发生内部错误,firebase,react-native,react-native-android,Firebase,React Native,React Native Android,你知道为什么我在React Native和Firebase中单击“通过电子邮件和密码注册”时会遇到这个问题吗 [Error: [auth/configuration-not] An internal error has occurred. [ CONFIGURATION_NOT_FOUND ]] 我的App.js文件 import React,{useEffect,useState} from 'react'; import 'react-native-gesture-handler'; i
[Error: [auth/configuration-not] An internal error has occurred. [ CONFIGURATION_NOT_FOUND ]]
我的App.js文件
import React,{useEffect,useState} from 'react';
import 'react-native-gesture-handler';
import {
StatusBar,
View,
Text
} from 'react-native';
import {Provider} from 'react-redux';
import {store} from './redux/store';
import Home from './screens/Home';
import Cart from './screens/Cart';
import CartDone from './screens/CartDone';
import Login from './screens/Login';
import Register from './screens/Register';
import {NavigationContainer} from '@react-navigation/native';
import {createDrawerNavigator,DrawerContentScrollView,DrawerItem} from '@react-navigation/drawer';
import Product from './screens/Product';
import {Avatar,Drawer} from 'react-native-paper';
import auth from '@react-native-firebase/auth';
const DrawerNav = createDrawerNavigator();
const App=() => {
// Set an initializing state whilst Firebase connects
const [initializing, setInitializing] = useState(true);
const [user, setUser] = useState();
// Handle user state changes
function onAuthStateChanged(user) {
setUser(user);
if (initializing) setInitializing(false);
}
useEffect(() => {
const subscriber = auth().onAuthStateChanged(onAuthStateChanged);
return subscriber; // unsubscribe on unmount
}, []);
if (initializing) return null;
if(!user){
return(
<Provider store={store}>
<StatusBar barStyle="white" backgroundColor="red" />
<NavigationContainer>
<DrawerNav.Navigator InitialRoute="Login" drawerContent={(props)=><DrawerContent {...props}/>}>
<DrawerNav.Screen name="Login" component={Login} />
<DrawerNav.Screen name="Register" component={Register} />
</DrawerNav.Navigator>
</NavigationContainer>
</Provider>
);
}
return (
<Provider store={store}>
<StatusBar barStyle="white" backgroundColor="red" />
<NavigationContainer>
<DrawerNav.Navigator InitialRoute="Home" drawerContent={(props)=><DrawerContent {...props}/>}>
<DrawerNav.Screen name="Home" component={Home} />
<DrawerNav.Screen name="Cart" component={Cart} />
<DrawerNav.Screen name="CartDone" component={CartDone} />
<DrawerNav.Screen name="Product" component={Product} />
</DrawerNav.Navigator>
</NavigationContainer>
</Provider>
);
};
function DrawerContent(props){
return(
<DrawerContentScrollView {...props}>
<View style={{flex:1,alignItems:"center"}}>
<Avatar.Image style={{backgroundColor:'white'}} size={130} source={require('./assets/avatar.png')}/>
</View>
<Drawer.Section>
<DrawerItem
label="Home"
icon={()=>(
<Avatar.Icon backgroundColor="white" color="black" size={30} icon="home"/>
)}
onPress={()=>props.navigation.navigate('Home')}
/>
<DrawerItem
label="Cart"
icon={()=>(
<Avatar.Icon backgroundColor="white" color="black" size={30} icon="cart"/>
)}
onPress={()=>props.navigation.navigate('Cart')}
/>
<DrawerItem
label="Login"
icon={()=>(
<Avatar.Icon backgroundColor="white" color="black" size={30} icon="account"/>
)}
onPress={()=>props.navigation.navigate('Login')}
/>
</Drawer.Section>
</DrawerContentScrollView>
);
}
export default App;
从“React”导入React,{useffect,useState};
导入“反应本机手势处理程序”;
进口{
状态栏,
看法
正文
}从“反应本机”;
从'react redux'导入{Provider};
从“./redux/store”导入{store};
从“/screens/Home”导入主页;
从“/screens/Cart”导入购物车;
从“/screens/CartDone”导入CartDone;
从“/screens/Login”导入登录名;
从“./screens/Register”导入寄存器;
从'@react-navigation/native'导入{NavigationContainer};
从'@react navigation/drawer'导入{createDrawerNavigator,DrawerContentScrollView,DrawerItem};
从“./屏幕/产品”导入产品;
从“react National paper”导入{Avatar,Drawer};
从'@react native firebase/auth'导入身份验证;
const paurernav=createpaurernavigator();
常量应用=()=>{
//在Firebase连接时设置初始化状态
const[initializing,setInitializing]=useState(true);
const[user,setUser]=useState();
//处理用户状态更改
函数onAuthStateChanged(用户){
setUser(用户);
if(初始化)setInitializing(false);
}
useffect(()=>{
const subscriber=auth().onAuthStateChanged(onAuthStateChanged);
返回订阅服务器;//卸载时取消订阅
}, []);
如果(初始化)返回null;
如果(!用户){
返回(
}>
);
}
返回(
}>
);
};
功能抽屉内容(道具){
返回(
(
)}
onPress={()=>props.navigation.navigate('Home')}
/>
(
)}
onPress={()=>props.navigation.navigate('Cart')}
/>
(
)}
onPress={()=>props.navigation.navigate('Login')}
/>
);
}
导出默认应用程序;
my Register.js文件:
import React,{useState} from 'react'
import {View,StyleSheet,TouchableOpacity,TextInput} from 'react-native';
import Header from '../components/header';
import {Item,Input,Icon,Label,CheckBox,ListItem,Body,Text} from "native-base";
//react-native-hide-show-password-input
//import auth from '@react-native-firebase/auth';
import { ScrollView } from 'react-native-gesture-handler';
import firestore from '@react-native-firebase/firestore';
export default Register = ({navigation})=>{
return (
<Header screen="Register" component={Main} navigation={navigation} />
)
}
const Main=(props)=>{
const [email,setemail]=useState('');
const [password,setpassword]=useState('');
const [firstName,setfirstName]=useState('');
const [lastName,setLastName]=useState('');
const [secureText,setSecureText]=useState(true);
const [isChecked,setisChecked]=useState(false);
function CreateUser(){
if(email!="" && email!=null && password!="" && password!=null && isChecked==true ){
auth()
.createUserWithEmailAndPassword(email,password)
.then(() => {
console.log('User account created & signed in!');
})
.catch(error => {
if (error.code === 'auth/email-already-in-use') {
console.log('That email address is already in use!');
}
if (error.code === 'auth/invalid-email') {
console.log('That email address is invalid!');
}
console.log("last one",error);
});
}
// adding user to firestore
/*firestore()
.collection('Users')
.add({
name: firstName+" "+lastName,
email : email,
password : password,
})
.then(() => {
console.log('User added!');
})
.catch(err=>console.log(err)); */
}
return (
<ScrollView>
<View style={styles.Container}>
<View style={styles.form}>
<Item rounded style={styles.inputstyle}>
<Input
placeholder="First Name"
value={firstName}
onChangeText={text =>setfirstName(text)}
underlineColor="transparent"
/>
</Item>
<Item rounded style={styles.inputstyle}>
<Input
placeholder="Last Name"
value={lastName}
onChangeText={text =>setLastName(text)}
underlineColor="transparent"
/>
</Item>
<Item rounded style={styles.inputstyle}>
<Input
placeholder="Email"
value={email}
onChangeText={text =>setemail(text)}
underlineColor="transparent"
/>
</Item>
<Item rounded style={styles.inputstyle}>
<Input secureTextEntry={secureText} onChangeText={(text)=>setpassword(text)} placeholder='password'/>
<Icon active onPress={()=>setSecureText(secureText==true ? false : true)} name={secureText==true ? "eye-off" : "eye"} />
</Item>
<View style={styles.termscheckboxContainer}>
<ListItem>
<CheckBox onPress={()=>setisChecked(isChecked==false ? true : false)} checked={isChecked} />
<Text style={{ marginLeft:10 }}>Accept the terms and conditions</Text>
</ListItem>
</View>
<TouchableOpacity
onPress={()=>CreateUser()}
style={styles.submit}>
<Text style={styles.submittxt}>Sign up</Text>
</TouchableOpacity>
<View style={styles.divid}>
<View style={styles.line} />
<Text style={styles.or}>or</Text>
<View style={styles.line} />
</View>
<View style={styles.secondpanel}>
<TouchableOpacity style={styles.facebook}>
<Text style={styles.txtsignwith}>Sign In with Facebook</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.google}>
<Text style={styles.txtsignwith}>Sign In with Google</Text>
</TouchableOpacity>
<View style={styles.signupqs}>
<Text style={styles.signupqstxtA}>Already have an account?</Text>
<TouchableOpacity
onPress={()=>props.navigation.navigate('Login')}
style={styles.signupqsbtn}>
<Text style={styles.signupqstxtB}>Sign In</Text>
</TouchableOpacity>
</View>
</View>
</View>
</View>
</ScrollView>
)
}
import React,{useState}来自“React”
从“react native”导入{View,StyleSheet,TouchableOpacity,TextInput};
从“../components/Header”导入标题;
从“本机库”导入{Item,Input,Icon,Label,CheckBox,ListItem,Body,Text};
//反应本机隐藏显示密码输入
//从'@react native firebase/auth'导入身份验证;
从“反应本机手势处理程序”导入{ScrollView};
从“@react native firebase/firestore”导入firestore;
导出默认寄存器=({navigation})=>{
返回(
)
}
常量Main=(道具)=>{
const[email,setemail]=useState(“”);
const[password,setpassword]=useState(“”);
const[firstName,setfirstName]=useState(“”);
const[lastName,setLastName]=useState(“”);
const[secureText,setSecureText]=useState(true);
const[isChecked,setisChecked]=useState(false);
函数CreateUser(){
if(email!=“”&&email!=null&&password!=“”&&password!=null&&isChecked==true){
auth()
.createUserWithEmailAndPassword(电子邮件,密码)
.然后(()=>{
log('User account created&signed in!');
})
.catch(错误=>{
如果(error.code==='auth/email已在使用'){
log('该电子邮件地址已在使用!');
}
如果(error.code==='auth/invalid email'){
log('该电子邮件地址无效!');
}
日志(“最后一个”,错误);
});
}
//将用户添加到firestore
/*firestore()
.collection('用户')
.添加({
姓名:firstName+“”+lastName,
电邮:电邮,,
密码:密码,
})
.然后(()=>{
log('User added!');
})
.catch(err=>console.log(err))*/
}
返回(
setfirstName(文本)}
underlineColor=“透明”
/>
setLastName(文本)}
underlineColor=“透明”
/>
setemail(文本)}
underlineColor=“透明”
/>
setpassword(text)}占位符='password'/>
setSecureText(secureText==true?false:true)}name={secureText==true?“眼睛离开”:“眼睛”}/>
setisChecked(isChecked==false?true:false)}checked={isChecked}/>
接受条款和条件
CreateUser()}
style={style.submit}>
注册
或
使用Facebook登录
使用谷歌登录
已经有账户了吗?
props.navigation.navigate('Login')}
style={style.signupqsbtn}>
登录
)
}
我已遵循React Native Firebase文档中的所有说明。
验证函数登录验证工作。
我还启用了firebase的电子邮件和密码服务
谢谢。您是否检查过Android应用程序google-services.json文件中的项目id与启用google登录身份验证的Firebase项目相同?如果是这种情况,并且您没有编辑google-services.json文件,您可以向Firebase提交一份支持票证。您是否检查了Android应用程序google-services.json文件中的项目id与启用google登录身份验证的Firebase项目相同?如果是这种情况,并且您尚未编辑google-services.json文件,则可以向Fi提交支持票证