使用React Native和Firebase进行电子邮件身份验证

发布于:2021-02-03 10:05:20

0

202

0

react javascript Firebase 电子邮件身份验证 React Native

在每一个应用程序中,你都会看到几种身份验证,比如使用Facebook、Google等进行登录,但人们还是喜欢输入电子邮件和密码。在本教程中,我们将把电子邮件身份验证与React native和Firebase集成在一起。使用firebase使其更易于使用。让我告诉你怎么做?

 

通过Expo创建新项目

我们不会使用react native cli,而是使用Expo。这将使我们的任务更容易一点。因为使用react native cli,我们至少需要安装XCode或androidstudio来运行和测试应用程序。

https://media.com/media/18214d8333adbb5668f31791a3202b60/href

要使用Expo制作应用程序,您需要键入terminal或CMD:

expo init react native firebase

  

按下Enter键后,安装开始。安装完成后,使用VS Code打开项目。

  

要运行该应用程序,您需要使用cd app-folder-name进入它,然后运行命令yarn start。

 

一旦你运行了这个应用程序,Expo将打开一个新的浏览器窗口。

 

你可以看到很多可以运行Android和iOS模拟器以及QR码的选项。这里我们使用iOS模拟器来运行这个应用程序。然后打开模拟器或使用你的设备打开Expo应用程序。

您将看到如下屏幕:

 

如果一切正常,我们就可以出发了。让我们开始真正的编码:

使用本地基础的快速形成引导

为了快速开发我们的界面,我们使用Nativebase进行开发。

 

要安装native base,请打开一个新终端并运行以下命令:

npm i native-base -s

 

不要担心在进行本地基础安装过程中是否会出现一些错误。停止expo并再次运行npm安装。

 

我们将返回正常模式

带有本地基本组件的安装表格

现在,我们已经准备好将必要的Nativebase组件导入到APP.js

import { Container, Item, Form, Input, Button, Label } from "native-base";

导入后,我们将为前端窗体构建一个用户界面。

render() {
**return** (
<Container>
<Form>
<Item floatingLabel>
<Label>Email</Label>
<Input autoCapitalize="none" autoCorrect={false} />
</Item>
<Item floatingLabel>
<Label>Password</Label>
<Input
secureTextEntry={true}
autoCapitalize="none"
autoCorrect={false}
/>
</Item>
<Button full rounded>
<Text>SignIn</Text>
</Button>
</Form>
</Container>
);
}


一旦你保存了上面显示的代码,然后你就可以在屏幕上看到即时结果。这个概念也被称为热重新加载。

 

所以让我们把窗体居中对齐。为此,我们将使用样式表属性。只要看看下面的代码,您就可以很容易地理解我们正在用容器处理样式表中的属性。

<Container style={styles.container}>

只需在样式中添加注释,我们就可以使其成为中心。

**const** styles = StyleSheet.create({
 container: {
 flex: 1,
 backgroundColor: "#fff",
 // alignItems: "center",
 justifyContent: "center"
 }
});


现在保存代码并查看结果。所有部件居中对齐。太棒了,让我们继续下一步:

  

将Firebase添加到React本机项目

要添加firebase,我们需要在App.js上运行命令npm i firebase --save和after import firebase,如下所示:

import * as firebase from "firebase";


下一步是创建firebase项目。转到firebase控制台,创建项目查找apikey和配置,如下图所示:

 

抓取配置并粘贴到APP.js如下图所示:

import * as firebase from "firebase";
import { Container, Item, Form, Input, Button, Label } from "native-base";

var config = {
 apiKey: "AIzaSyDFdsjQWG8IFLXmviNqSiVZMw_ADFl5tpo",
 authDomain: "react-native-firebase-3bde9.firebaseapp.com",
 databaseURL: "https://react-native-firebase-3bde9.firebaseio.com",
 projectId: "react-native-firebase-3bde9",
 storageBucket: "react-native-firebase-3bde9.appspot.com",
 messagingSenderId: "269398778466"
};

firebase.initializeApp(config);


最后,我们成功地将firebase tp添加到了我们的项目中。

注册

对于电子邮件身份验证,我们需要在Firebase控制台上激活电子邮件身份验证。转到firebase控制台并启用它。

 

再次回到VS Code并添加一个注册按钮。以便用户填写信息。

<Button full rounded success style={{ marginTop: 20 }}> <Text>Signup</Text>
</Button>


添加按钮后,您将能够通过Signin和signup按钮看到此结果。

 

让我们为注册按钮编写一点代码。你可以跟着我走。如果你这样做,很少有机会犯错误并看到任何类型的错误。

export default class App extends React.Component {
 constructor(props) {
 super(props);
 this.state = {
 email: "",
 password: ""
 };
 }
 SignUp = (email, password) => {
 try {
 firebase.auth().createUserWithEmailAndPassword(email, password);
 } catch (error) {
 console.log(error.toString(error));
 }
 };

现在,我们创建一个状态来处理表单中的电子邮件和密码,并创建用于处理firebase代码的注册函数。

下一步是用onChangeText向state添加表单值。

<Item floatingLabel>
<Label>Email</Label>
<Input
autoCapitalize="none"
autoCorrect={false}
onChangeText={email => this.setState({ email })}
/>
</Item>
<Item floatingLabel>
<Label>Password</Label>
<Input
secureTextEntry={true}
autoCapitalize="none"
autoCorrect={false}
onChangeText={password => this.setState({ password })}
/>

我们将使用注册按钮的onPress事件触发注册功能。

onPress={() => this.SignUp(this.state.email, this.state.password)}

让我们试着保存并提交表单,以测试我们是否朝着正确的方向前进。

 

进入并点击注册后,转到firebase控制台。查看firebase数据库,您可以看到我们输入的值。

 

现在我们已经成功地向Firebase添加了一个新用户。

登录

让我们为登录按钮编码。我们使用了来自注册方法的代码,并对firebase函数进行了一些修改。这样我们才能达到我们想要的。

SignIn = (email, password) => {
**try** {
firebase.auth().signInWithEmailAndPassword(email, password);
firebase.auth().onAuthStateChanged(user => {
alert(user.email);
})

} **catch** (error) {
console.log(error.toString(error));
}
};

接下来,使用onAuthStateChanged从firebase获取用户数据。所以,如果我们按下这个按钮,一个onPress甚至会呼叫SignIn,它会检查电子邮件和密码是否正确。

onPress={() => this.SignIn(this.state.email, this.state.password)}

所以让我们试着登录。

它起作用了。最后,我们做到了。你可以看到一切都很好。

结论

我们使用了Expo,Nativebase,Firebase。我希望你已经学会了。如果你觉得值得,继续分享。