Firebase令牌到期和处理刷新令牌的最佳实践

时间:2018-10-18 18:02:09

标签: firebase firebase-authentication

我当前正在使用客户端上的Firebase用户身份验证方法在客户端应用程序(基于Cordova的移动应用程序)上使用Firebase:

  • signInWithEmailAndPassword
  • FacebookAuthProvider

根据我目前对会话到期的理解和经验:

身份验证会话不会随着Firebase登录而到期。但是ID令牌必须每小时刷新一次,以保持对服务的访问。

我认为这意味着我应该编写一个每59分钟运行一次并运行firebase方法的后台进程方法:

firebase.auth()。currentUser.getIdToken(true) // true表示根据firebase文档,无论当前令牌过期如何,都强制执行Refresh。

我只是想确保我已经把头缠住了。

我正在处理类似这样的简单事情……这可能可以解决问题:

  let firebaseTokenRefresh = setInterval(function(){
     console.log('running firebase token refresh...');
     // true = forceRefresh
     firebase.auth().currentUser.getIdToken(true); 
  }, 3540000); // 59 minutes firebase token refresh (1 hr expiration)

谢谢。

1 个答案:

答案 0 :(得分:0)

不需要主动刷新令牌(这样做太昂贵了)。每当需要ID令牌时,您只需致电user.getIdToken()。这将返回缓存的未过期令牌,或者如果当前令牌已过期则刷新它。您可以在将经过身份验证的请求发送到服务器时随时调用。 如果您使用的是Firestore或Realtime数据库,它们将在需要时随时为您自动刷新令牌。您可以通过auth.onIdTokenChanged()监听器监听令牌更新。