我使用signInWithRedirect(provider)和getRedirectResult()从提供商(即Google)登录后获取结果。
我面临的问题是,在重定向之后,getRedirectResult()似乎花了很长时间(可能需要3-5秒)才能解决问题,因此,它仍然显示谷歌重定向后的默认视图(即登录形式),同时等待解决的承诺,这不是一次很好的体验。
是否有一种方法可以检测用户是否被从Google登录重定向,以便我可以在等待getRedirectResult()解析时加载一个旋转器?
我在没有运气的情况下尝试过document.referrer。
发布于 2017-10-26 06:20:26
当没有挂起的重定向时,getRedirectResult()应该快速解析(一秒钟的分数)。如果存在挂起的重定向,则应在其解析之前显示一些旋转器。顺便说一句,您也可以使用onAuthStateChanged来检测状态下的符号,而不管是否存在挂起的重定向。
下面是一个简单的示例,说明如何显示旋转器。当重定向操作正在处理时。
// On load, show spinner.
showSpinner();
firebase.auth().getRedirectResult().then(result => {
// If user just signed in or already signed in, hide spinner.
if (result.user || firebase.auth().currentUser) {
hideSpinner();
} else {
hideSpinner();
showSignInForm();
}
});你也可以自己追踪。
// Before starting sign in with redirect.
window.sessionStorage.setItem('pending', 1);
firebase.auth().signInWithRedirect(authProvider)...
// On return.
if (window.sessionStorage.getItem('pending')) {
window.sessionStorage.removeItem('pending');
showSpinner();
firebase.auth().getRedirectResult().then(result => {
hideSpinner();
});
}https://stackoverflow.com/questions/46922658
复制相似问题