Angular-Firebase重定向后获取用户数据

时间:2018-11-23 08:38:30

标签: angular firebase firebase-authentication angularfire2

我目前正在尝试使用signInWithRedirect重构所有的signInWithPopup方法,因为它在移动设备上更加易用。但是,当我尝试在重定向后检索数据时,我永远无法获取它。我什至尝试设置超时时间。也许有些人知道我的问题的解决方案: Firebase doc

我的服务

  public loginWithGoogle(): Promise<firebase.UserCrendential> {
      const provider = new firebase.auth.GoogleAuthProvider();
      return this.angularFireAuth.auth.signInWithRedirect(provider).then(() =>
       this.angularFireAuth.auth.getRedirectResult().then(res => res));
  }

组件

  // binded on a click event on the dom - just wanna log the data not more :(
  public loginWithGoogle(): void {
    this.loginService.loginWithGoogle().then(res => console.log(res))
  }

2 个答案:

答案 0 :(得分:0)

与signInWithPopup不同,signInWithRedirect调用导致页面重新加载,并且在此重新加载上未调用signInWithRedirect,其诺言从未解决,然后未达到getRedirectResult()。

您应该在构造函数上调用this.angularFireAuth.auth.getRedirectResult()。当服务从重定向加载时,它会提供数据,否则返回{user: null}example on stackblitz

答案 1 :(得分:-1)

我以前遇到过这个问题。

如果您对以下内容感兴趣,这是一个解决方法

您可以在module.exports = withSass({ webpack: (config, { buildId, dev, isServer, defaultLoaders }) => { config.module.rules.push({ enforce: "pre", test: /\.scss$/, loader: "sass-resources-loader", options: { resources: globalSass } }) return config } }) 上收听authState Observable。一旦您在组件上的AngularFireAuth中进行了订阅,重定向之后,ngOnInit将发生更改,并会生成已登录用户的详细信息。

类似这样的东西:

authState