我们正在使用一个iOS应用程序,它正在使用Google来验证Firebase.根据
https://www.firebase.com/docs/ios/guide/user-auth.html#section-login Firebase说,验证令牌每24小时到期.
我们想知道以下情况是否需要考虑:
我们想知道以下情况是否需要考虑:
>用户使用Google和Firebase进行身份验证
>我们的应用程序获得一个Firebase认证令牌,在24小时内到期
>用户关闭我们的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会自动刷新认证令牌吗?
解决方法
显然,问题是关于旧版Firebase及其SDK. Firebase(3.X)的当前版本使您更容易,因为Firebase会记住用户上次登录您的应用程序的方式.
所以你应该直接打电话
FIRApp.configure()一如往常.在您的应用程序中:didFinishLaunchingWithOptions launchOptions:然后在启动应用程序时添加状态监听器,如
FIRAuth.auth()?.addStateDidChangeListener() { (auth,firUser) in // do something with firUser,e.g. update UI }
随着Firebase的应用程序启动时,侦听器将自动被调用,只要有关用户的更改,令牌在后台由Firebase处理,即您不必处理过期的令牌. (如果您使用Custom Auth System可能会更复杂).