У меня есть приложение для Android с несколькими действиями и долговременным сервисом. У службы есть некоторые классы моделей, POJO, которые хранятся в базе данных Firebase.Firebase Auth: Получение AuthCredential после входа в систему с помощью FirebaseUI-Android
При первом запуске приложение определяет, что пользователь еще не вошел в систему и использует FirebaseUI-Android, чтобы предлагать деятельность по сбору учетных записей с помощью Google и Facebook. Это довольно часто:
Intent signInIntent = AuthUI.getInstance().createSignInIntentBuilder()
.setProviders(Arrays.asList(
new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build()))
.setTheme(R.style.AppThemeFirebaseAuth)
.setLogo(R.drawable.logo)
.setIsSmartLockEnabled(!BuildConfig.DEBUG)
.build();
activity.startActivityForResult(signInIntent, Request.FIREBASE_AUTH);
Затем я могу получить FirebaseUser
и начать делать вещи с базой данных.
FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference firebaseUserRef = FirebaseDatabase.getInstance().getReference("users").child(firebaseUser.getUid());
Проблема возникает при следующем запуске службы, которая может быть, когда никакой активности нет. Я хотел бы снова выполнить некоторые операции с базой данных, но без какого-либо взаимодействия с пользователем. Похоже, мне нужно позвонить FirebaseAuth.signInWithCredential()
, но где я могу получить ссылку AuthCredential
? AuthCredential
не возвращается к активности, которая начинает вход.
Могу ли я использовать материал Smart Lock в FirebaseUI-Android, чтобы помочь здесь?
Невозможно получить доступ к FirebaseAuth.getInstance(). GetCurrentUser(); от вашего сервиса? Поскольку это статический метод, вы должны иметь доступ к нему из любого места. –
Конечно. Возвращает значение null. – Eliot
@SaurabhPadwekar Я говорил скоро, извините! Похоже, что это возвращает нуль гораздо реже, чем я сначала боялся. Я буду проводить тестирование в течение следующих нескольких недель и обновить это своими выводами, но мне, возможно, не придется упорствовать в AuthCredential. – Eliot