首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检测``getRedirectResult()‘在’`signInWithRedirect()‘之后的状态

如何检测``getRedirectResult()‘在’`signInWithRedirect()‘之后的状态
EN

Stack Overflow用户
提问于 2017-10-25 01:48:22
回答 1查看 5.5K关注 0票数 13

我使用signInWithRedirect(provider)getRedirectResult()从提供商(即Google)登录后获取结果。

我面临的问题是,在重定向之后,getRedirectResult()似乎花了很长时间(可能需要3-5秒)才能解决问题,因此,它仍然显示谷歌重定向后的默认视图(即登录形式),同时等待解决的承诺,这不是一次很好的体验。

是否有一种方法可以检测用户是否被从Google登录重定向,以便我可以在等待getRedirectResult()解析时加载一个旋转器?

我在没有运气的情况下尝试过document.referrer

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-26 06:20:26

当没有挂起的重定向时,getRedirectResult()应该快速解析(一秒钟的分数)。如果存在挂起的重定向,则应在其解析之前显示一些旋转器。顺便说一句,您也可以使用onAuthStateChanged来检测状态下的符号,而不管是否存在挂起的重定向。

下面是一个简单的示例,说明如何显示旋转器。当重定向操作正在处理时。

代码语言:javascript
复制
// 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();
  }
});

你也可以自己追踪。

代码语言:javascript
复制
// 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();
  });
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46922658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档