如何获取AngularFire2

时间:2017-01-27 17:31:08

标签: angular firebase ionic2 firebase-authentication angularfire2

我正在使用AngularFire2(Ionic2)和Firebase身份验证。

我在尝试获取当前用户时遇到问题。对我而言,但不一致。有时它会被填充,有时它会为空。

let user: firebase.User = firebase.auth().currentUser;

有没有办法让当前用户更一致?

更多信息:

我登录如下:

import { FirebaseAuth, AuthProviders, AuthMethods } from 'angularfire2';

public auth: FirebaseAuth

    this.auth.login({
      provider: AuthProviders.Google,
      method: AuthMethods.Popup
    }).then((data: any) => {
            this.fireAuth.onAuthStateChanged((user) => {
                        ....
            });
    });

此处始终填充用户。但是我需要访问用户的地方是代码的另一部分。

任何帮助表示感谢。

更新

我尝试使用以下内容来获取当前用户:

    this.auth.subscribe((authData) => {
      let user = authData.auth;
        credential = firebase.auth.GoogleAuthProvider.credential(googleIdToken, googleAccessToken);
        user.reauthenticate(credential).then(() => {...
    });

但是当我尝试创建凭据时,我收到以下错误:

  

EXCEPTION:未捕获(承诺):错误:重新验证失败:首先   论证"凭证"必须是有效的凭证。

当我在第一种方法中获得当前用户时,我没有收到任何错误并且有效。

更多信息:

当我console.log以下user个对象时,它们看起来都相同:

  let user: firebase.User = this.fireAuth.currentUser;
  console.log(user);

    this.auth.subscribe((authData) => {
            let user: firebase.User = authData.auth;
            console.log(user);
    });

但是一个工作(当不是null时)而另一个不能重新认证。

2 个答案:

答案 0 :(得分:1)

我找到this simple approach to work

constructor(af: AngularFire) {
  af.auth.subscribe(auth => {
    if(auth) {
      console.log('logged in');
    } else {
      console.log('not logged in');
    }
  });
}

关于Github的AngularFire2 Authentication的更多信息

  • 免责声明:我的项目。

答案 1 :(得分:1)

注意有一个新的AngularFire版本。 (4.0.0)

在新版本中,所有模块都被拆分。这意味着,您需要使用AngularFireAuth


    constructor(afAuth: AngularFireAuth) {
        afAuth.authState.subscribe(auth => {
          if(auth) {
            console.log('logged in');
          } else {
            console.log('not logged in');
          }
        });
    }

希望我能帮忙