15

我们正在开发一个 iOS 应用程序,该应用程序使用 Google 向 Firebase 进行身份验证。根据https://www.firebase.com/docs/ios/guide/user-auth.html#section-login Firebase 表示身份验证令牌每 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?
}];

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

处理这种情况的最佳实践是什么?Firebase 是否会在接近到期时自动刷新身份验证令牌?

4

1 回答 1

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
}

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

于 2017-03-14T15:07:10.873 回答