React Native Firebase Auth功能

时间:2018-09-06 09:31:31

标签: firebase react-native firebase-authentication

我正在使用带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 })}

1 个答案:

答案 0 :(得分:1)

您的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时,只需导入即可