需要Firebase重新验证

vjy*_*vjy 14 ios firebase firebase-authentication

我们正在开发一款使用Google进行身份验证的iOS应用.根据https://www.firebase.com/docs/ios/guide/user-auth.html#section-login,Firebase说auth令牌每24小时到期一次.我们想知道以下情况是否需要考虑:

  1. 用户通过Google和Firebase进行身份验证
  2. 我们的应用会获得一个24小时后到期的Firebase身份验证令牌
  3. 用户关闭我们的iOS应用
  4. Firebase身份验证令牌到期前1分钟,用户重新打开应用程序
  5. 一分钟后,我们向Firebase提出请求.身份验证令牌已过期.

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

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

这不是理想的,因为我们必须在我们发出请求的任何地方编写此代码.

处理这种情况的最佳做法是什么?Firebase会在到期时自动刷新身份验证令牌吗?

Rap*_*ael 0

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

FIRApp.configure()因此,您应该像往常一样简单地调用, application: didFinishLaunchingWithOptions launchOptions:例如在您的应用程序中添加一个状态侦听器,例如

FIRAuth.auth()?.addStateDidChangeListener() { (auth, firUser) in 
// do something with firUser, e.g. update UI
}
Run Code Online (Sandbox Code Playgroud)

然后,每当您的用户发生变化并且 Firebase 在后台处理令牌时,Firebase 将在您的应用程序启动时自动调用侦听器,即您不必处理过期的令牌。(如果您使用自定义身份验证系统,可能会更复杂)。