Я использую 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;
}
Да, я пытался это API, но он не смог с verifyIDToken. – dickyj
Если у вас есть код, который не работает, отправьте [минимальный код, воспроизводящий эту проблему] (http://stackoverflow.com/help/mcve). –
Я отправил код, спасибо за продолжение. – dickyj