我正在使用 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) => {
....
});
});
这里用户总是被填充。但我需要访问用户的地方位于代码的另一部分。
任何帮助表示赞赏。
UPDATE
我尝试使用以下命令来获取当前用户:
this.auth.subscribe((authData) => {
let user = authData.auth;
credential = firebase.auth.GoogleAuthProvider.credential(googleIdToken, googleAccessToken);
user.reauthenticate(credential).then(() => {...
});
但是当我尝试创建凭据时,出现以下错误:
异常:未捕获(承诺):错误:重新验证失败:首先
参数“credential”必须是有效的凭证。
当我用第一种方法获取当前用户时,我没有收到任何错误并且它有效。
更多信息:
When I console.log
下列user
对象,它们看起来都相同:
let user: firebase.User = this.fireAuth.currentUser;
console.log(user);
and
this.auth.subscribe((authData) => {
let user: firebase.User = authData.auth;
console.log(user);
});
但其中一个可以工作(当不为空时),而另一个则无法重新进行身份验证。