我有一个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