我有一個Tomcat 8(不是android),Java 8和Firebase Admin版本5.2.0的Java Web應用程序。 下面的代碼工作正常,但我需要確保該任務完成並返回一個值。如何檢查Java中的firebase任務是否完成?
@POST
@Path("/verifyToken")
@Produces(MediaType.APPLICATION_JSON)
public Response verifyToken(@Context HttpHeaders headers,@Context HttpServletRequest request) {
try {
String auth = headers.getRequestHeader("authorization").get(0);
if (!auth.isEmpty()) {
System.out.println("logged auth token: " + auth);
}
// validate token
Task<FirebaseToken> task = FirebaseAuth.getInstance().verifyIdToken(auth)
.addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
@Override
public void onSuccess(FirebaseToken decoded) {
String uid = decoded.getUid();
//do some stuff
}
});
/*
The return statement below shouldn't run unless "task" is
complete.
task has method isComplete()
*/
return Response.status(200).entity(user).build();
} catch (Exception e) {
e.printStackTrace();
System.out.println("Login Exception " + e.getMessage());
return Response.status(500).build();
}
}
任務對象(任務)有一個方法「isComplete()」。但是,可能需要多次調用它。如果在第一次任務不完成時,代碼應該知道如何等待,並且稍後再次調用,並且這種方式一直持續到特定次數。
我被困在如何構建邏輯以正確等待並再次嘗試,直到任務完成或事件退出條件。
怎麼辦?
您正在尋找'Tasks.await()'。請參閱Doug'd的優秀博客文章:https://firebase.googleblog.com/2016/10/become-a-firebase-taskmaster-part-4.html –
這正是我所期待的。謝謝你,弗蘭克。 – blackjack