Рубрики
Без рубрики

Аутентификация входа в Google с помощью Firebase в Android (2020)

Добавьте следующие зависимости в свою реализацию build.gradle ‘com.google.огневая база: огневая база-… С тегами android, java, google cloud.

Добавьте следующие зависимости в свой файл build.gradle

implementation 'com.google.firebase:firebase-auth:19.3.1'  
implementation 'com.google.android.gms:play-services-auth:18.0.0'

Прежде чем начать, я предполагаю, что вы уже подключили свое приложение для Android к firebase. В этом случае я уже подключил лабораторию 12-й недели к firebase

После этого нажмите опцию Android и создайте новое приложение

Имя пакета Android можно найти в файле build.gradle под именем идентификатора приложения. Кроме того, нам придется создать сертификат SHA-1 для подписи отладки

Чтобы сгенерировать ключ SHA-1, введите следующую команду в своем терминале

keytool -список -v -хранилище ключей ~/.android/отладка.хранилище ключей -псевдоним androiddebugkey -доступ к хранилищу android -ключ для android

Результат выполнения команды. Я спрятал отпечатки пальцев в сертификате SHA1.

Добавьте google-сервисы.файл json в папку вашего приложения

Подробное объяснение можно найти в официальной документации Google . Этот учебник просто создан для того, чтобы объяснить каждый шаг как можно более кратко.

  1. Настройка входа в Google и клиентского объекта входа в Google
  2. Проверьте, используется ли существующий вход в систему
  3. Используйте аутентификацию на базе Firebase
  4. Добавьте, что произойдет, если действительный пользователь войдет в систему
  5. Добавить кнопку выхода из системы
  6. Играйте с данными пользователя
  7. Манифест обновления

Следующее делает запрос на вход в Google

// Configure Google Sign In  
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT\_SIGN\_IN)  
        .requestIdToken(getString(R.string.default\_web\_client\_id))  
        .requestEmail()  
        .build();

После этого в onCreate нам нужно будет добавить клиент для входа в Google

// Build a GoogleSignInClient with the options specified by gso.  
mGoogleSignInClient = GoogleSignIn.getClient(this, gso);

Строки 15 и 27 показывают, как мы добавили новый клиент входа в Google и создали его экземпляр в методе onCreate.

Создать кнопку Входа в Систему

Создайте новый XML-класс под названием login.xml и добавьте кнопку входа в Google.

Создайте метод входа в систему

Затем нам нужно зарегистрироваться в Google с намерением. Нам придется создать новый метод в классе LoginActivity.

private void signIn() {  
    Intent signInIntent = mGoogleSignInClient.getSignInIntent();  
    startActivityForResult(signInIntent, RC\_SIGN\_IN);  
}

RC_SIGN_IN может быть любым числом. В этом случае я назначил 1.

Создайте нового слушателя для использования метода входа

Создайте новый onclicklistener, который использует новый метод подписи(), который мы только что создали.

Найдите кнопку и установите OnClickListener

Найдите кнопку, которую мы создадим в вашем XML, и назначьте ей дескриптор прослушивателя входа в Google.

Теперь, когда мы определились с намерением, мы можем проверить, является ли учетная запись Google действительной учетной записью.

Добавить активностьрезультат

@Override  
public void onActivityResult(int requestCode, int resultCode, Intent data) {  
    super.onActivityResult(requestCode, resultCode, data);  


    // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);  
    if (requestCode == _RC\_SIGN\_IN_) {  
        Task task = GoogleSignIn._getSignedInAccountFromIntent_(data);  
        try {  
            // Google Sign In was successful, authenticate with Firebase  
            GoogleSignInAccount account = task.getResult(ApiException.class);  
            firebaseAuthWithGoogle(account);  
        } catch (ApiException e) {  
            // Google Sign In failed, update UI appropriately  
            // ...  
            Toast._makeText_(this, e.getMessage(), Toast._LENGTH\_SHORT_).show();  
        }  
    }  
}

Добавьте Аутентификацию firebase С Помощью Google (Строка idToken)

Приведенные ниже учетные данные будут являться учетными данными пользователя, вошедшего в систему. Если это будет успешным, то мы разрешим пользователю войти в систему.

private void firebaseAuthWithGoogle(GoogleSignInAccount account) {  
    AuthCredential credential = GoogleAuthProvider._getCredential_(account.getIdToken(), null);  

    mAuth.signInWithCredential(credential)  
            .addOnCompleteListener(this, new OnCompleteListener() {  
                @Override  
                public void onComplete(@NonNull Task task) {  
                    if (task.isSuccessful()) {  
                        // Sign in success, update UI with the signed-in user's information  
                        FirebaseUser user = mAuth.getCurrentUser();  
                        Intent intent = new Intent(getApplicationContext(), MainActivity.class);  
                        startActivity(intent);  

                    } else {  
                        // If sign in fails, display a message to the user.  
                        Toast._makeText_(getApplicationContext(), "Sorry authentication failed ", Toast._LENGTH\_SHORT_).show();  

                    }  
                }  
            });  
}

Создайте экземпляр FirebaseAuth в onCreate()

mAuth = FirebaseAuth.getInstance();

В методе жизненного цикла OnStart() добавьте следующий код, чтобы проверить, вошел ли текущий пользователь в систему.

protected void onStart() {  

    super.onStart();  
    FirebaseUser currentUser = mAuth.getCurrentUser();  
    if(currentUser!=null){  
        Intent intent = new Intent(getApplicationContext(),MainActivity.class);  
        startActivity(intent);  
    }  
}

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

Важной частью этого кода является идентификатор выхода из системы

Создайте метод дескриптора выхода из системы. Это также может быть переписано как OnClickListener, если вы используете кнопки

Следующее вызывает handleLogout когда выбран случай выхода из системы

Теперь, когда пользователь вошел в систему, мы можем найти некоторые данные о нем, чтобы сделать приложение более персонализированным для него. Один из способов, которым мы можем это сделать, – создать тост, если они снова вошли в приложение. Мы можем сделать это, добавив следующее в onCreate основной активности

//Google sign  
GoogleSignInAccount signInAccount= GoogleSignIn._getLastSignedInAccount_(this);  
if(signInAccount!=null){  
    Toast.makeText(this, "Welcome back "signInAccount.getDisplayName() , Toast._LENGTH\_SHORT_).show();  
}

Убедитесь, что в манифесте указаны как активность входа, так и Основная активность

Оригинал: “https://dev.to/alfielytorres/google-login-authentication-with-firebase-in-android-2020-538e”