1

나에게 Heroku에 호스트 된 스파크 프레임 워크를 사용하고 있는데 내 main이 있습니다 안녕하세요 세계 ". 커스텀 토큰 생성이 비동기 인 경우 Firebase 커스텀 토큰을 어떻게 반환합니까? "잘 작동하고</p>이 <pre><code>post("/token", (request, response) -> "Hello World"); </code></pre> <p>그러나, 실제로 사용자 정의 토큰을 보낼 내 서버에 방법, 그리고 :

그래서, 논리적으로, 나는이 필요합니다 :

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에서 다시 async로 전송되었습니다. ( 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(); 
를 사용 할 수 있습니다