我目前正在尝试使用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))
}
答案 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