我们正在开发一款使用Google进行身份验证的iOS应用 . 根据https://www.firebase.com/docs/ios/guide/user-auth.html#section-login Firebase说auth令牌每24小时到期 . 我们想知道以下情况是否需要考虑:
-
用户通过Google和Firebase进行身份验证
-
我们的应用获得了一个24小时后到期的Firebase身份验证令牌
-
用户关闭我们的iOS应用程序
-
在Firebase身份验证令牌到期前1分钟,用户重新打开该应用
-
一分钟后,我们向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会在到期时自动刷新身份验证令牌吗?
1 回答
显然,问题是关于旧版本的Firebase及其SDK . Firebase(3.X)的当前版本使您更容易,因为Firebase会记住用户上次登录您的应用的方式 .
所以你应该像往常一样打电话给
FIRApp.configure()
,例如在你的application: didFinishLaunchingWithOptions launchOptions:
然后在你的应用程序启动时添加一个状态监听器然后,Firebase会在应用程序启动时自动调用侦听器,只要有关用户的更改,并且Firebase在后台处理令牌,即您不必处理过期的令牌 . (如果使用Custom Auth System,可能会更复杂) .