gpt4 book ai didi

java - 在 Firebase java 中同步验证 IdToken

转载 作者:行者123 更新时间:2023-11-29 06:28:36 26 4
gpt4 key购买 nike

我正在构建一个带有 rest API 的 Java 服务器,我正在使用 Firebase 对我的用户进行身份验证。

当用户进行重置调用时,他会发送我正在使用下一个方法验证的 Firebase token :

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();
}
}

最佳答案

你有两个选择(一个是 spring 的例子):

  1. 您返回一个 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;
  2. 您强制 Firebase 等待返回的 token :

    try {
    FirebaseToken decodedToken = Tasks.await(
    FirebaseAuth.getInstance().verifyIdToken(firebaseAuthToken));
    } catch (ExecutionException | InterruptedException e) {
    log.error("Error: {}", e.getLocalizedMessage());
    }

关于java - 在 Firebase java 中同步验证 IdToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44599733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com