Я начинаю новый проект, и Firebase Auth был выбором для аутентификации. Идея состоит в том, чтобы создать / авторизовать пользователей через Firebase Auth, а затем использовать токен Firebase ID для аутентификации на моем бэкэнде (через заголовок Authentication).
В Google Samples я должен получить токен следующим образом:
FirebaseUser mUser = FirebaseAuth.getInstance().getCurrentUser();
mUser.getIdToken(true)
.addOnCompleteListener(new OnCompleteListener<GetTokenResult>() {
public void onComplete(@NonNull Task<GetTokenResult> task) {
if (task.isSuccessful()) {
String idToken = task.getResult().getToken();
// Send token to your backend via HTTPS
// ...
} else {
// Handle error -> task.getException();
}
}
});
Но, как вы можете видеть, это асинхронный вызов, потому что он идет к серверам Firebase, чтобы получить мне токен. Таким образом, при каждом вызове API REST моего бэкэнда мне нужно запускать приведенный выше код, потому что я не знаю, когда истек токен.
Есть ли лучший способ безопасного вызова моего бэкэнда REST API с использованием Firebase Auth? Или использование Firebase ID Token является лучшим? Если да, то как мне обернуть этот токен id для каждого вызова REST API?
Если у вас есть лучший способ аутентифицировать пользователей, чтобы они вызывали rest apis позже, я весь в ушах.