Untuk mengintegrasikan Login dengan Google ke aplikasi Android, konfigurasikan Login dengan Google dan tambahkan tombol ke tata letak aplikasi yang memulai alur login.
Sebelum memulai
Mengonfigurasi project Konsol API Google dan menyiapkan project Android Studio.
Mengonfigurasi Login dengan Google dan objek GoogleSignInClient
Dalam metode
onCreate
aktivitas login, konfigurasikan Login dengan Google untuk meminta data pengguna yang diperlukan oleh aplikasi Anda. Misalnya, untuk mengonfigurasi Login dengan Google guna meminta ID pengguna dan informasi profil dasar, buat objekGoogleSignInOptions
dengan parameterDEFAULT_SIGN_IN
. Untuk meminta alamat email pengguna juga, buat objekGoogleSignInOptions
dengan opsirequestEmail
.// Configure sign-in to request the user's ID, email address, and basic // profile. ID and basic profile are included in DEFAULT_SIGN_IN. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build();
Jika Anda perlu meminta cakupan tambahan untuk mengakses Google API, tentukan cakupan tersebut dengan
requestScopes
. Untuk mendapatkan pengalaman pengguna terbaik, saat login, hanya minta cakupan yang diperlukan agar aplikasi Anda berfungsi secara minimal. Minta cakupan tambahan hanya jika Anda memerlukannya, sehingga pengguna melihat layar izin dalam konteks tindakan yang mereka lakukan. Lihat Meminta Cakupan Tambahan.Kemudian, juga dalam metode
onCreate
aktivitas login, buat objekGoogleSignInClient
dengan opsi yang Anda tentukan.// Build a GoogleSignInClient with the options specified by gso. mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
Memeriksa pengguna yang sudah login
Dalam metode onStart
aktivitas, periksa apakah pengguna sudah login ke
aplikasi Anda dengan Google.
// Check for existing Google Sign In account, if the user is already signed in // the GoogleSignInAccount will be non-null. GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this); updateUI(account);
Jika GoogleSignIn.getLastSignedInAccount
menampilkan objek GoogleSignInAccount
,
bukan null
, pengguna telah login ke aplikasi Anda dengan Google.
Perbarui UI Anda dengan semestinya—yaitu, sembunyikan tombol login, luncurkan
aktivitas utama, atau apa pun yang sesuai untuk aplikasi Anda.
Jika GoogleSignIn.getLastSignedInAccount
menampilkan null
, pengguna belum
login ke aplikasi Anda dengan Google. Perbarui UI Anda untuk menampilkan tombol Login Google.
Menambahkan tombol Login dengan Google ke aplikasi
Tambahkan
SignInButton
di tata letak aplikasi Anda:<com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="wrap_content" android:layout_height="wrap_content" />
Opsional: Jika menggunakan gambar tombol login default, bukan menyediakan aset tombol login Anda sendiri, Anda dapat menyesuaikan ukuran tombol dengan metode
setSize
.// Set the dimensions of the sign-in button. SignInButton signInButton = findViewById(R.id.sign_in_button); signInButton.setSize(SignInButton.SIZE_STANDARD);
Dalam aktivitas Android (misalnya, dalam metode
onCreate
), daftarkanOnClickListener
tombol untuk memproses login pengguna saat diklik:findViewById(R.id.sign_in_button).setOnClickListener(this);
Memulai alur login
Dalam metode
onClick
aktivitas, tangani ketukan tombol login dengan membuat intent login dengan metodegetSignInIntent
, dan memulai intent denganstartActivityForResult
.@Override public void onClick(View v) { switch (v.getId()) { case R.id.sign_in_button: signIn(); break; // ... } }
private void signIn() { Intent signInIntent = mGoogleSignInClient.getSignInIntent(); startActivityForResult(signInIntent, RC_SIGN_IN); }
Memulai intent akan meminta pengguna memilih Akun Google yang akan digunakan untuk login. Jika Anda meminta cakupan di luar
profile
,email
, danopenid
, pengguna juga akan diminta untuk memberikan akses ke resource yang diminta.Setelah pengguna login, Anda bisa mendapatkan objek
GoogleSignInAccount
untuk pengguna di metodeonActivityResult
aktivitas.@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { // The Task returned from this call is always completed, no need to attach // a listener. Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data); handleSignInResult(task); } }
Objek
GoogleSignInAccount
berisi informasi tentang pengguna yang login, seperti nama pengguna.private void handleSignInResult(Task<GoogleSignInAccount> completedTask) { try { GoogleSignInAccount account = completedTask.getResult(ApiException.class); // Signed in successfully, show authenticated UI. updateUI(account); } catch (ApiException e) { // The ApiException status code indicates the detailed failure reason. // Please refer to the GoogleSignInStatusCodes class reference for more information. Log.w(TAG, "signInResult:failed code=" + e.getStatusCode()); updateUI(null); } }
Anda juga bisa mendapatkan alamat email pengguna dengan
getEmail
, ID Google pengguna (untuk penggunaan sisi klien) dengangetId
, dan token ID untuk pengguna dengangetIdToken
. Jika Anda perlu meneruskan pengguna yang saat ini login ke server backend, kirim token ID ke server backend dan validasi token di server.