需要Firebase重新validation

我们正在开发一个使用Google来validationFirebase的iOS应用。 根据https://www.firebase.com/docs/ios/guide/user-auth.html#section-login Firebase说,authentication令牌每24小时过期。 我们想知道下面的情况是否需要考虑:

  1. 用户通过Google和Firebase进行身份validation
  2. 我们的应用获取了24小时内过期的Firebase身份validation令牌
  3. 用户closures我们的iOS应用程序
  4. 在Firebase身份validation令牌过期前1分钟,用户重新打开该应用程序
  5. 一分钟后,我们向Firebase发出请求。 身份validation令牌已过期。

我们似乎必须通过https://www.firebase.com/docs/ios/guide/user-auth.html#section-monitoring-authentication观察身份validation更改来重新validationFirebase。 但是,我们是否需要重新向上面#5的Firebase发出相同的请求? 另外,似乎我们可以在cancelBlock中重新进行身份validation:

[ref observeEventType:FEventTypeValue withBlock:^(FDataSnapshot *snapshot) { NSLog(@"%@", snapshot.value); } withCancelBlock:^(NSError *error) { NSLog(@"%@", error.description); // reauthenticate and then re-issue request? }]; 

这不太理想,因为我们必须在我们提出请求的任何地方编写这个代码。

处理这种情况的最佳做法是什么? 当接近到期时,Firebase会自动刷新validation令牌吗?

显然,问题是关于旧版本的Firebase及其SDK。 Firebase(3.X)的当前版本使您更容易,因为Firebase会记住用户上次login您的应用的方式。

所以你应该像在application: didFinishLaunchingWithOptions launchOptions:一样简单地调用FIRApp.configure() application: didFinishLaunchingWithOptions launchOptions:然后在应用程序启动时添加一个状态监听器

 FIRAuth.auth()?.addStateDidChangeListener() { (auth, firUser) in // do something with firUser, eg update UI } 

然后,在Firebase启动应用程序的时候,只要您的用户发生了某些变化,Firebase将在后台处理这些令牌,即无需处理过期的令牌,就会自动调用此侦听器。 (如果使用自定义身份validation系统 ,则可能会更复杂)。