【发布时间】:2017-06-17 00:48:51
【问题描述】:
我正在构建一个带有 rest API 的 Java 服务器,并且我正在使用 Firebase 对我的用户进行身份验证。
当用户进行重置调用时,他会发送我正在使用下一个方法验证的 Firebase 令牌:
FirebaseAuth.getInstance(firebaseApp).verifyIdToken(idToken)
.addOnSuccessListener(decodedToken -> {
// do some thing
});
问题是我们谈论的是 HTTP 调用,它们不是同步的。虽然我找到了一种使此方法同步的解决方法,但我很好奇是否有一个原生 Firebase API 可以开箱即用地为我提供。
我的解决方法:
final Object hack = new Object();
synchronized (hack) {
FirebaseAuth.getInstance(firebaseApp).verifyIdToken(idToken)
.addOnCompleteListener(decodedToken -> {
// do some thing
synchronized (hack){
hack.notifyAll();
}
});
try {
hack.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
【问题讨论】:
-
没有简单的方法可以使异步同步。但这听起来像是XY problem。异步处理程序不适用于您的用例的原因是什么?
-
这里到底有什么需要同步完成的?
-
@cricket_007 我收到来自客户端的请求,由于它是 http,我需要同步返回响应。在我可以这样做之前,我需要验证客户端令牌。所以我希望令牌验证是同步的
-
@FrankvanPuffelen 我想你和 cricket_007 会问同样的问题
-
哪个先发生?您是在使用带有 Volley 或 Retrofit 等的 HTTP 吗?这些也是异步的。但这并不妨碍您在 Firebase 回调中执行它们,从而使其同步
标签: java firebase firebase-authentication