"Hello Wo-6ren">
gpt4 book ai didi

java - 如果自定义 token 的生成是异步的,我将如何返回 Firebase 自定义 token ?

转载 作者:行者123 更新时间:2023-11-30 02:38:22 24 4
gpt4 key购买 nike

我正在使用 Heroku 上托管的 Spark 框架,我的 main 中有这个框架: 我的服务器中的方法

post("/token", (request, response) -> "Hello World");

这工作正常,但是,我想实际发送一个自定义 token ,而不仅仅是“Hello World”。

所以,从逻辑上讲,我需要这个:

FirebaseAuth auth = FirebaseAuth.getInstance();
String uid = UUID.randomUUID().toString();
post("/token", (request, response) -> auth.createCustomToken(uid));

但是,createCustomToken返回 Task<String>而不是String 。所以,我必须这样做:

auth.createCustomToken(uid).addOnSuccessListener(new OnSuccessListener<String>() {
@Override
public void onSuccess(String s) {

}
});

但是,在这种形式中:

post("/token", (request, response) -> auth.createCustomToken(uid).addOnSuccessListener(new OnSuccessListener<String>() {
@Override
public void onSuccess(String token) {

}
}));

我真正返回的只是 Task<String> 。我需要返回token来自onSuccess()方法,但我不能,因为它是一个内部类。

我该如何解决这个问题?

最佳答案

我在 Google App Engine 中遇到了类似的问题。我必须在服务器端验证 firebase token ,但响应是从 firebase 异步发回的。 ( Verify Firebase Token at Google App Engine )

您可以尝试以下代码而不是使用 OnSuccesListener

Task<String> authTask = FirebaseAuth.getInstance().createCustomToken(uid);

try {
Tasks.await(authTask);
} catch (ExecutionException | InterruptedException e ) {
log.severe(e.getMessage());
}

String myToken = authTask.getResult();

关于java - 如果自定义 token 的生成是异步的,我将如何返回 Firebase 自定义 token ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42467781/

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