2016-10-01 3 views
-1

Я использую Firebase Authentication в своем мобильном приложении. Задняя часть - это приложение загрузки Spring. API-интерфейсы REST на задней панели полагаются на токен, созданный с помощью Firebase Authentication, для извлечения UID Firebase (метод verifyIDToken) пользователя для выполнения дополнительных функций. В настоящее время я замечаю, что в Firebase Java API (на базе сервера) нет способа генерации токена для пользователя, поэтому для меня нет простого способа выполнить JUnit-тестирование на сервере, основанное на аутентификации пользователей. Кто-нибудь знает, как это сделать?Как запустить тестирование JUnit на Firebase Java с проверкой подлинности?

Это пример кода, который не работает:

@RequestMapping(value = "/api/subscribeChannel/{channelid}", method = RequestMethod.GET, produces = "application/json") 
public DeferredResult<Object> subscribeChannel(@PathVariable Long channelid,@RequestHeader(value=FIREBASETOKEN, required = true) String idToken) { 


    DeferredResult<Object> result = new DeferredResult<Object>(DEFERREDTIMEOUT);  

    // test it out with a locally generated token 
    idToken = FirebaseAuth.getInstance().createCustomToken("valid Uid"); 

    Task<FirebaseToken> task = FirebaseAuth.getInstance().verifyIdToken(idToken) 
      .addOnSuccessListener(new OnSuccessListener<FirebaseToken>() { 
       @Override 
       public void onSuccess(FirebaseToken decodedToken) { 
        String uid = decodedToken.getUid();      
        logger.info("Subscribe channel on success"); 

         // do something 

         ret.setStatus("success"); 
         ret.setMessage("channel id " + channelid + " subscribed"); 

         result.setResult(ret);       
        } else { 
         result.setErrorResult(retStatus.getMessage()); 
        } 

       } 
     }) .addOnFailureListener(new OnFailureListener() { 

      @Override 
      public void onFailure(Exception arg0) { 
       Exception te = new TokenNotFoundException(idToken); 
       logger.error("Token Not Found for " + idToken); 
       result.setErrorResult(te); 

      } 

     });  

    return result;  

} 

ответ

0

Java-API для создания пользовательских маркеров документирована под Create custom tokens using the Firebase SDK.

Оттуда:

String uid = "some-uid"; 
String customToken = FirebaseAuth.getInstance().createCustomToken(uid); 
+0

Да, я пытался это API, но он не смог с verifyIDToken. – dickyj

+0

Если у вас есть код, который не работает, отправьте [минимальный код, воспроизводящий эту проблему] (http://stackoverflow.com/help/mcve). –

+0

Я отправил код, спасибо за продолжение. – dickyj

Смежные вопросы