Ich baue einen Java-Server mit Rest-API und ich benutze Firebase, um meine Benutzer zu authentifizieren.Synchronous verifyIdToken in Firebase Java
Wenn der Benutzer einen Reset Anruf er Firebase-Token, das ich die Überprüfung der nächsten Methode sendet:
FirebaseAuth.getInstance(firebaseApp).verifyIdToken(idToken)
.addOnSuccessListener(decodedToken -> {
// do some thing
});
Das Problem ist, dass wir reden über HTTP-Aufrufe, sind solche, die nicht synchron. Und während ich einen Workaround gefunden habe, um diese Methode synchron zu machen, bin ich neugierig, ob es eine native Firebase-API gibt, die mir das sofort zur Verfügung stellt.
Meine Arbeit um:
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();
}
}
Es gibt keine einfache Möglichkeit, asynchrone synchron zu machen. Aber es klingt wie ein [XY-Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Was ist der Grund, warum ein asynchroner Handler für Ihren Anwendungsfall nicht funktioniert? –
Was genau muss hier synchron gemacht werden? –
@ cricket_007 Ich bekomme eine Anfrage vom Client, und da es http ist muss ich synchron eine Antwort zurückgeben. Bevor ich das tun kann, muss ich Client-Token überprüfen. Also ich möchte die Token-Validierung synchron sein –