裸反应本机项目的firebase身份验证

Posted

技术标签:

【中文标题】裸反应本机项目的firebase身份验证【英文标题】:firebase authentication for bare react native project 【发布时间】:2022-01-21 14:02:22 【问题描述】:

我正在尝试使用电子邮件和密码启用具有 firebase 身份验证的系统。 这是裸反应原生项目 - 不是博览会。

这是我创建的 app.js 文件。


import  StatusBar  from 'expo-status-bar';
import React from 'react';
import  StyleSheet, Text, View  from 'react-native';
import  NavigationContainer  from '@react-navigation/native';
import  createNativeStackNavigator  from '@react-navigation/native-stack';
import LoginPage from './LoginPage';
import Homepage from './Homepage';

const Stack = createNativeStackNavigator();

export default function App() 
  return (
    <NavigationContainer>
    <Stack.Navigator>
      <Stack.Screen options=headerShown:false name="Login" component=LoginPage />
      <Stack.Screen name="Home" component=Homepage />
    </Stack.Navigator>
  </NavigationContainer>
  );

然后我创建了一个名为 firebase.js 的文件来包含项目的 firebase 功能。


import * as firebase from "firebase";
// TODO: Add SDKs for Firebase products that you want to use
// https://firebase.google.com/docs/web/setup#available-libraries

// Your web app's Firebase configuration
const firebaseConfig = 
  apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  authDomain: "xxxxxxxxxxxxxxxxxxx",
  projectId: "xxxxxxxxxx",
  storageBucket: "xxxxxxxxxxxxxxxxx",
  messagingSenderId: "xxxxxxxxxxxxx",
  appId: "xxxxxxxxxxxxxxx"
; 

// Initialize Firebase
let app;
if(firebase.app.length === 0)
  app = firebase.initializeApp(firebaseConfig);
else
  app = firebase.app()

const auth = firebase.auth()
exportauth;

然后用户可以在此页面中输入他们的凭据,并且用户在此处输入的数据应在 firebase 中更新。

import React,useState from 'react'
import  TouchableOpacity, TextInput,KeyboardAvoidingView,StyleSheet, Text, View  from 'react-native'
import auth from '/firebase'

const LoginPage = () => 
  const [email,setEmail] = useState('')
  const [password,setPassword] = useState('')
   
   //register user 

   const registration = () =>
     auth
     .createUserWithEmailAndPassword(email,password)
     .then(userCredentials =>
       const user = userCredentials.user;
     )
     .catch(error => alert(error.message))
    
   

    return (
        <KeyboardAvoidingView
        style=styles.container
        behavior="padding"
        >
            <View style=styles.textInputs>
            <TextInput placeholder="email"
            value=email
            onChangeText=text=>setEmail(text)
            style=styles.input
            />  
            
            <TextInput placeholder="password"
            value=password
            onChangeText=text=>setPassword(text)
            style=styles.input secureTextEntry
            />   

            </View>
            <View style=styles.buttonContainer>
              <TouchableOpacity onPress=()=>
              style=[styles.button , styles.buttonMore]>
            <Text style=styles.buttonText  > Login  </Text>
            </TouchableOpacity>
            
             <TouchableOpacity onPress=()=>registration
              style=[styles.button , styles.buttonMore]>
            <Text style=styles.buttonText  > Register  </Text>
            </TouchableOpacity>
            
            </View>

        </KeyboardAvoidingView>
    )


export default LoginPage

const styles = StyleSheet.create(
  container:
    flex:1,
    justifyContent:"center",
    alignItems:"center",
    backgroundColor:"#FF69B4"
  ,
  textInputs:
    width:"80%"
  ,
  input:
    backgroundColor:"white",
    paddingHorizontal:15,
    paddingVertical:10,
    borderRadius:10,
    marginTop:5,
    
  ,
  buttonContainer:
    width:"60%",
    justifyContent:"center",
    alignItems:"center",
    marginTop:30,

  ,
  button:
    backgroundColor:"#D462FF",
    width:"100%",
    borderRadius:10,
    padding:15,
    alignItems:"center"  
  ,
  buttonMore:
    backgroundColor:"#FF1493",
    marginTop:5,
  ,
  buttonText:
    color:"white",
    fontWeight:"700",
    fontSize:16
  
)

但问题是什么都没有发生。数据未更新到 Firebase。 我使用基于 expo 的教程完成了这段代码。但现在我正在裸反应原生项目上尝试这个。

谁能指出这里有什么问题以及应该改变什么?

【问题讨论】:

【参考方案1】:

问题是您使用的是 firebase Web,这对于纯 React-native 不起作用,您需要将 firebase 用于 react-native

寻找这个firebase react-native

【讨论】:

以上是关于裸反应本机项目的firebase身份验证的主要内容,如果未能解决你的问题,请参考以下文章

反应本机 Firebase 身份验证错误

使用firebase电话身份验证验证失败

删除firebase中的auth用户反应本机

对 Firebase 身份验证做出反应

使用 Express 会话反应本机身份验证?

使用 apollo graphql 对 firebase 身份验证做出反应