首页 > 解决方案 > React Native Firebase 身份验证功能

问题描述

我正在使用使用 firebase 实时存储的 react native crud 应用程序。我将 firebase 身份验证功能与电子邮件和密码记录一起使用。但我的 Firebase 身份验证不起作用。firebase 连接会出现更多问题。我用这个功能来连接firebase。

  componentWillMount() {
      firebase.initializeApp({
       apiKey: 'xxxxxxxxxxxxxxxxxxxxxxxx',
       authDomain: 'xxxxxxxxxxxxxxxxxxxxxx',
       databaseURL: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx',
       projectId: 'xxxxxxxxxxxxxxxxxxxxx',
       storageBucket: 'xxxxxxxxxxxxxxxxxxxxxxxx',
       messagingSenderId: 'xxxxxxxxxxxxxxx'
     });
  }

我的登录按钮身份验证功能如下所示:

  state = { email: '', password: '', error: '' };

  onButtonPress() {
    const { email, password } = this.state;

    firebase.auth().signInWithEmailAndPassword(email, password)
    .catch(() => {
      firebase.auth().createUserWithEmailAndPassword(email, password)
      .catch(() => {
        this.setState({ error: 'Authenticaton Failed.' });
      });
    });
   }

我像这样导入firebase库:

import * as firebase from 'firebase';
import 'firebase/firestore';
import 'firebase/auth';

但是这种配置不起作用。它向我显示了这个错误:

undefined is not a function (evaluating 'firebase.auth()')

我曾经通过这种方法获取文本输入值:

    value={this.state.password}
    onChangeText={password => this.setState({ password })}

标签: firebasereact-nativefirebase-authentication

解决方案


您的 firebase 配置仅存在于您的componentDidMount. 试试这样:在任何你想要的地方
创建一个文件并添加:<namefile>.js

import * as firebase from 'firebase'
import 'firebase/auth';

const config = {
    apiKey: "your key",
    authDomain: "domain",
    databaseURL: xxxx",
    projectId: "xxxx",
    storageBucket: "xxx",
    messagingSenderId: "xxxx"
};

if (!firebase.apps.length) {
    firebase.initializeApp(config);
}

const auth = firebase.auth();

export {
    auth
}; 

在您的组件中导入auth并在您的按钮方法中通过以下方式更改您的代码:

auth.signInWithEmailAndPassword

它应该可以工作,每次你需要使用auth时,你只需要导入它


推荐阅读