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

Вход в Google на Android с помощью Firebase

Сегодня я покажу вам, как использовать Firebase для интеграции входа в Google в ваше приложение.. Мы будем… С тегами android, java, codenewbie, новички.

База огня (Серия из 2 частей)

Сегодня я покажу вам, как использовать Firebase для интеграции входа в Google в ваше приложение.. Мы добавим эту функцию в приложение для Android, которое мы создали в первом посте серии

Аналитика Firebase Для Android Не Должна Быть Такой Сложной

Автономный программист ・ 1 ноября ’20 ・ 2 минуты чтения

Конфигурация огневой базы

  • На консоли Firebase откройте раздел “Аутентификация”, нажмите “Настроить метод входа”.
  • Обновите файл Gradle модуля (на уровне приложения), добавив библиотеку аутентификации Firebase для Android. Вам также необходимо добавить библиотеку сервисов Google Play.
    implementation 'com.google.firebase:firebase-auth'
    implementation 'com.google.android.gms:play-services-auth:19.0.0'
  • Обязательно запустите Gradle синхронизацию

Активность входа

  • Добавьте новое пустое действие в приложение и назовите его LoginActivity.
  • Обновите AndroidManifest.xml файл для установки действия входа в систему в качестве средства запуска.
...
        
            
                
                
            
        
...
  • Обновление activity_login.xml как показано ниже, чтобы добавить кнопку входа и индикатор выполнения



    

    

        
    


  • Объявите следующие переменные на LoginActivity.java
GoogleSignInClient googleSignInClient;
ProgressBar mLogInProgress;
SignInButton signInButton;
FirebaseAnalytics mFirebaseAnalytics;

  • Обновите метод onCreate, чтобы установить кнопку setOnClickListener для входа в систему и вызвать клиент настройки Google() метод
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        mLogInProgress = findViewById(R.id.log_in_progress);
        signInButton = findViewById(R.id.sign_in_button);
        signInButton.setSize(SignInButton.SIZE_WIDE);
        signInButton.setColorScheme(SignInButton.COLOR_LIGHT);
        signInButton.setOnClickListener(view -> {
            mLogInProgress.setVisibility(View.VISIBLE);
            signInToGoogle();
        });
        configureGoogleClient();
    }

  • Настройка клиента Google () – это место, где вам нужно настроить параметры входа в Google и FirebaseAuth. смотреть ниже
    private void configureGoogleClient() {
        GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                // for the requestIdToken, this is in the values.xml file that
                // is generated from your google-services.json
                .requestIdToken(getString(R.string.default_web_client_id))
                .requestEmail()
                .build();
        // Build a GoogleSignInClient with the options specified by gso.
        googleSignInClient = GoogleSignIn.getClient(this, gso);
        // Set the dimensions of the sign-in button.
        SignInButton signInButton = findViewById(R.id.sign_in_button);
        signInButton.setSize(SignInButton.SIZE_WIDE);
        // Initialize Firebase Auth
        firebaseAuth = FirebaseAuth.getInstance();
    }

  • Вход в Google() – это то, с чего мы начнем вход в систему, как показано ниже.
    public void signInToGoogle() {
        Intent signInIntent = googleSignInClient.getSignInIntent();
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }

  • Мы зафиксируем результат запуска намерения подписания в onActivityResult, как показано ниже.
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable 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
                mLogInProgress.setVisibility(View.GONE);
            }
        }
    }

  • Мы будем использовать firebase Auth с Google для аутентификации пользователя и запуска основного действия.
    private void firebaseAuthWithGoogle(GoogleSignInAccount account) {
        AuthCredential credential = GoogleAuthProvider.getCredential(account.getIdToken(), null);
        firebaseAuth.signInWithCredential(credential)
                .addOnCompleteListener(this, task -> {
                    if (task.isSuccessful()) {
                        // Sign in success, update UI with the signed-in user's information
                        FirebaseUser user = firebaseAuth.getCurrentUser();
                        if (user != null) {
                            startActivity(new Intent(LoginActivity.this, MainActivity.class));
                            finish();
                        }
                    } else {
                        // failed
                        mLogInProgress.setVisibility(View.GONE);
                    }
                });
    }

  • Обновите метод OnStart(), чтобы проверить, вошел ли пользователь уже в систему.
    @Override
    public void onStart() {
        super.onStart();
        // Check if user is signed in (non-null) and update UI accordingly.
        FirebaseUser currentUser = firebaseAuth.getCurrentUser();
        if (currentUser != null) {
            mLogInProgress.setVisibility(View.VISIBLE);
            signInButton.setVisibility(View.GONE);
            startActivity(new Intent(LoginActivity.this, MainActivity.class));
            finish();
        }
    }

Основная Деятельность

  • Давайте воспользуемся кнопкой для выхода из системы. Обновите текст кнопки на activity_main.xml как показано ниже.
    

  • Обновите событие onClick кнопки, чтобы выйти из системы и вернуться к действию входа.
    Button button = findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mFirebaseAnalytics.logEvent("button_clicked", null);
            FirebaseAuth.getInstance().signOut();
            startActivity(new Intent(MainActivity.this, LoginActivity.class));
        }
    });

Запустите приложение

Проверьте код здесь

Следуйте за мной дальше Twitter для получения дополнительных советов о #кодировании, #обучении, #технологиях, #Java, #JavaScript, #Аутизме, #воспитании детей… и т.д.

Проверьте мои приложения в Google Play

Изображение на обложке Бретт Джордан

База огня (Серия из 2 частей)

Оригинал: “https://dev.to/offlineprogrammer/google-sign-in-on-android-using-firebase-51ob”