База огня (Серия из 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) { Tasktask = 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”