1

私はHerokuの上でホストされているスパークFrameworkを使用していると私は私のmainでこれを持っている:罰金働いている私のサーバー内のメソッドカスタムトークンの生成が非同期である場合、Firebaseカスタムトークンはどのように返されますか?

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

は、しかし、私は「実際にはカスタムトークン、およびないを送信したいですこんにちは世界"。

だから、論理的に、私はこれが必要になります

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

しかし、createCustomTokenTask<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>ました。 onSuccess()メソッドからtokenを返す必要がありますが、それは内部クラスなのでできません。

これを解決するにはどうすればよいですか?

答えて

2

Google App Engineで同様の問題が発生していました。私はサーバ側でfirebaseトークンを確認しなければならなかったが、応答は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(); 
を使用して、以下のコードを試すことができます
関連する問題