我正在使用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时)而另一个不能重新认证。
答案 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'); } }); }
希望我能帮忙