Ily*_*man 1 java firebase firebase-authentication
我正在构建一个带有rest API的Java服务器,我正在使用Firebase来验证我的用户.
当用户进行重置调用时,他会使用下一个方法发送我正在验证的Firebase令牌:
FirebaseAuth.getInstance(firebaseApp).verifyIdToken(idToken)
.addOnSuccessListener(decodedToken -> {
// do some thing
});
Run Code Online (Sandbox Code Playgroud)
问题是我们正在谈论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();
}
}
Run Code Online (Sandbox Code Playgroud)
你有两个选择(一个是春天的例子):
你返回一个DeferredResult:
final DeferredResult<ResponseEntity<String>> deferredResult = new DeferredResult<>(5000l);
FirebaseAuth.getInstance().verifyIdToken(firebaseAuthToken)
.addOnSuccessListener(new OnSuccessListener<FirebaseToken>() {
@Override
public void onSuccess(FirebaseToken decodedToken) {
deferredResult.setResult(decodedToken);
}
});
return deferredResult;
Run Code Online (Sandbox Code Playgroud)您强制Firebase等待返回的令牌:
try {
FirebaseToken decodedToken = Tasks.await(
FirebaseAuth.getInstance().verifyIdToken(firebaseAuthToken));
} catch (ExecutionException | InterruptedException e) {
log.error("Error: {}", e.getLocalizedMessage());
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
896 次 |
| 最近记录: |