📜  如何在 ReactJS 中使用 firebase 验证电话号码?

📅  最后修改于: 2022-05-13 01:56:41.884000             🧑  作者: Mango

如何在 ReactJS 中使用 firebase 验证电话号码?

以下方法介绍了如何在 react 中使用 firebase 对电话号码进行身份验证。我们使用了firebase模块来实现这一点。

创建 React 应用程序并安装模块:

  • 第 1 步:使用以下命令创建一个 React myapp:

    npx create-react-app myapp
  • 第 2 步:创建项目文件夹(即 myapp)后,使用以下命令移动到该文件夹:

    cd myapp

项目结构:我们的项目结构将如下所示。

第 3 步:创建 ReactJS 应用程序后,使用以下命令安装 firebase 模块:

npm install firebase@8.3.1 --save

第 4 步:转到您的 firebase 仪表板并创建一个新项目并复制您的凭据。

const firebaseConfig = {
      apiKey: "your api key",
      authDomain: "your credentials",
      projectId: "your credentials",
      storageBucket: "your credentials",
      messagingSenderId: "your credentials",
      appId: "your credentials"
};

第 5 步:通过使用以下代码创建一个firebase.js文件,将 Firebase 初始化到您的项目中。

firebase.js
import firebase from 'firebase';
  
const firebaseConfig = {
    // Your credentials
};
  
firebase.initializeApp(firebaseConfig);
var auth = firebase.auth();
export {auth , firebase};


login.js
import React, { useState } from 'react';
import { firebase, auth } from './firebase';
  
const Login = () => {
    // Inputs
    const [mynumber, setnumber] = useState("");
    const [otp, setotp] = useState('');
    const [show, setshow] = useState(false);
    const [final, setfinal] = useState('');
  
    // Sent OTP
    const signin = () => {
  
        if (mynumber === "" || mynumber.length < 10) return;
  
        let verify = new firebase.auth.RecaptchaVerifier('recaptcha-container');
        auth.signInWithPhoneNumber(mynumber, verify).then((result) => {
            setfinal(result);
            alert("code sent")
            setshow(true);
        })
            .catch((err) => {
                alert(err);
                window.location.reload()
            });
    }
  
    // Validate OTP
    const ValidateOtp = () => {
        if (otp === null || final === null)
            return;
        final.confirm(otp).then((result) => {
            // success
        }).catch((err) => {
            alert("Wrong code");
        })
    }
  
    return (
        
            
                
                     {                         setnumber(e.target.value) }}                         placeholder="phone number" />                     

                    
                                     
                
                     { setotp(e.target.value) }}>                     

                                     
            
        
    ); }    export default Login;


main.js
import React from 'react';
import { auth } from './firebase';
  
const Mainpage = () => {
  
    const logout = () => {
        auth.signOut();
    }
  
    return (
        
            
                

Welcome {auth.currentUser.phoneNumber}

                             
        
    ); }    export default Mainpage;


App.js
import React from 'react';
import {auth} from './firebase';
import {useAuthState} from 'react-firebase-hooks/auth';
import Login from './login';
import Mainpage from './main';
  
function App() {
  const [user] = useAuthState(auth);
  return (
    user ?  : 
  );
}
  
export default App;


第 6 步:转到您的 Firebase 仪表板并启用电话登录方法,如下所示。

第 7 步:现在使用以下命令安装 npm 包,即 react-firebase-hooks。

反应火力挂钩:

npm i react-firebase-hooks

这个包帮助我们监听用户的当前状态。

第 8 步:使用以下代码创建两个文件,即 login.js 和 main.js。

登录.js

import React, { useState } from 'react';
import { firebase, auth } from './firebase';
  
const Login = () => {
    // Inputs
    const [mynumber, setnumber] = useState("");
    const [otp, setotp] = useState('');
    const [show, setshow] = useState(false);
    const [final, setfinal] = useState('');
  
    // Sent OTP
    const signin = () => {
  
        if (mynumber === "" || mynumber.length < 10) return;
  
        let verify = new firebase.auth.RecaptchaVerifier('recaptcha-container');
        auth.signInWithPhoneNumber(mynumber, verify).then((result) => {
            setfinal(result);
            alert("code sent")
            setshow(true);
        })
            .catch((err) => {
                alert(err);
                window.location.reload()
            });
    }
  
    // Validate OTP
    const ValidateOtp = () => {
        if (otp === null || final === null)
            return;
        final.confirm(otp).then((result) => {
            // success
        }).catch((err) => {
            alert("Wrong code");
        })
    }
  
    return (
        
            
                
                     {                         setnumber(e.target.value) }}                         placeholder="phone number" />                     

                    
                                     
                
                     { setotp(e.target.value) }}>                     

                                     
            
        
    ); }    export default Login;

main.js

import React from 'react';
import { auth } from './firebase';
  
const Mainpage = () => {
  
    const logout = () => {
        auth.signOut();
    }
  
    return (
        
            
                

Welcome {auth.currentUser.phoneNumber}

                             
        
    ); }    export default Mainpage;

第 9 步:最后在App.js文件中导入所有需要的文件,如下所示。

应用程序.js

import React from 'react';
import {auth} from './firebase';
import {useAuthState} from 'react-firebase-hooks/auth';
import Login from './login';
import Mainpage from './main';
  
function App() {
  const [user] = useAuthState(auth);
  return (
    user ?  : 
  );
}
  
export default App;

运行应用程序的步骤:从项目的根目录使用以下命令运行应用程序:

npm start

输出:现在打开浏览器并转到http://localhost:3000/ ,您将看到以下输出: