需要Firebase重新验证

时间:2015-07-20 22:49:09

标签: ios firebase firebase-authentication

我们正在开发一款使用Google进行身份验证的iOS应用。根据{{​​3}} Firebase称,auth令牌每24小时到期一次。 我们想知道以下情况是否需要考虑:

  1. 用户通过Google和Firebase进行身份验证
  2. 我们的应用会获得一个24小时后到期的Firebase身份验证令牌
  3. 用户关闭我们的iOS应用
  4. Firebase身份验证令牌到期前1分钟,用户重新打开应用
  5. 一分钟后,我们向Firebase提出请求。身份验证令牌已过期。
  6. 我们似乎必须通过观察每https://www.firebase.com/docs/ios/guide/user-auth.html#section-login的身份验证更改来重新验证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是否会在到期时自动刷新身份验证令牌?

1 个答案:

答案 0 :(得分: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会在应用程序启动时自动调用侦听器,Firebase会在后台处理这些令牌,即您不必处理过期的令牌。 (如果使用Custom Auth System,可能会更复杂。)