Почему я должен аутентифицировать пользователя с помощью firebase после того, как он уже вошел в систему? - PullRequest
0 голосов
/ 11 января 2020

Я реализовал вход в Google в своем приложении android с аутентификацией через firebase, следуя документации . Тем не менее, я все еще пытаюсь понять код и логику c за ним.
Итак, после того, как пользователь успешно вошел в систему с помощью своей учетной записи gmail, метод firebaseAuthWithGoogle вызывается с информацией об учетной записи, передаваемой в качестве аргумента:

firebaseAuthWithGoogle(account); 

Вот его определение:

private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
        // We will put the data coming from the google account in MySQL database
        Log.d(TAG, "firebaseAuthWithGoogle:" + acct.getId());
    AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
    mFirebaseAuth.signInWithCredential(credential)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        Log.d(TAG, "signInWithCredential:success");
                        FirebaseUser user = mFirebaseAuth.getCurrentUser();

                    } else {
                        // If sign in fails, display a message to the user.
                        Log.w(TAG, "signInWithCredential:failure", task.getException());

                    }

                    // ...
                }
            });
}

}

Я пытался объяснить это себе согласно к документации :

После успешного входа в систему

GoogleSignInAccount account = task.getResult(ApiException.class);
firebaseAuthWithGoogle(account); // Calling firebaseAuthWithGoogle

получить идентификационный токен от объект GoogleSignInAccount , замените его на учетные данные Firebase ,

AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);

и выполните проверку подлинности с помощью Firebase

mFirebaseAuth.signInWithCredential(credential)

с использованием учетных данных Firebase .

Что мне не понятно 100% :
1. Почему я должен проходить аутентификацию с помощью Firebase, если пользователь уже вошел в систему?
2. Что Какую роль играет аутентификация Firebase, если пользователь уже вошел в систему?
3. Что означает вход в систему с использованием учетных данных Firebase, если пользователь уже вошел в систему?

Я знаю, что для некоторых из вас это может показаться тривиальным, но для меня весь процесс входа в систему довольно расплывчатый, особенно с аутентификацией Firebase.

1 Ответ

1 голос
/ 11 января 2020

Когда вы аутентифицируетесь с помощью firebase, вы можете получить доступ к зарегистрированному в данный момент пользователю, выполнив следующие действия:

FirebaseUser user = mFirebaseAuth.getCurrentUser();

Получив user, вы также можете получить userId, который вы можно использовать для подключения к базе данных Firebase.

Вы также можете проверить, вошел ли пользователь при повторном открытии приложения:

FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
if (user != null) {
    // User is signed in
} else {
    // No user is signed in
}

И перенаправить пользователя на страницу после входа в систему.

...