Syahrizal Akbar
Udacoding
Published in
4 min readOct 14, 2019

--

Otentikasi Menggunakan Google Sign In pada Aplikasi Android

Bismillah, pada kali ini kita akan belajar membuat sebuah aplikasi sederhana menggunakan google sign in agar otentikasi aplikasi android menjadi lebih mudah bagi user yang ingin menggunakan aplikasi kita.

Ya langsung saja kita membuatnya.

Pertama-tama buat sebuah project dengan nama Project Google SignIn

Jika sudah maka kita perlu menyiapkan akun google kita dan mengaktifkan google auth pada firebase konsol.

Untuk mengaktifkannya silahkan ikuti langkah-langkah berikut ini :

  1. Buka web https://console.firebase.google.com/ dan login dengan akun gmail sendiri.
  2. Lalu buat sebuah project

3. Beri nama project kita, lalu klik lanjutkan.

4. Lalu kita pilih yang bergambar android

5. Lalu Isikan formnya, lalu daftarkan aplikasi dan download google-services.json nya.

Untuk SHA-1nya bisa didapatkan melalui cara berikut :

Klik dua kali secara cepat, maka akan muncul SHA-1nya dibawah, jika sudah mengisi form kita next-next saja.

6. Pada next pertama kita perlu mendownload file jsonnya, lalu taruh didalam app project

7. Jika sudah silahkan klik pada menu navigasi yang bertuliskan Otentikasi pada sebelah kiri.

Lalu klik pada tab metode login kita aktifkan

Halaman Sign In

Buat sebuah activity baru dengan nama LoginActivity

Lalu kita edit layoutnya seperti berikut :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="32dp"
android:paddingRight="32dp"
>
<Button
android:id="@+id/btLoginGoogle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginTop="20dp"
android:layout_marginRight="30dp"
android:text="Login with Google"
android:background="#FF2727"
android:textColor="@android:color/white"
/>

</RelativeLayout>

note : untuk google sign in kita cukup membuat 1 tombol saja untuk memunculkan dialog untuk memilih akun yang ingin digunakan untuk sign in

Untuk menggunakan google sign in kita perlu tambahan dependency di gradleny, tambahkan :

implementation 'com.google.android.gms:play-services-auth:17.0.0'

Jika sudah lalu pada MainActivity, kita tambahkan kode berikut di LoginActivity

package id.rdev.projectgooglesignin

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInClient
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.android.gms.common.api.ApiException
import kotlinx.android.synthetic.main.activity_login.*

class LoginActivity : AppCompatActivity() {

private var googleSignInClient : GoogleSignInClient? = null

override fun
onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)

setupGoogleSignIn()
}

private fun setupGoogleSignIn() {
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail()
.build()

googleSignInClient = GoogleSignIn.getClient(this, gso)

btLoginGoogle.setOnClickListener {
signIn()
}

}

private fun signIn() {
val signInIntent = googleSignInClient?.signInIntent
startActivityForResult(signInIntent, 1)
}

public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)

// Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
if (requestCode == 1) {
val task = GoogleSignIn.getSignedInAccountFromIntent(data)
try {
// Google Sign In was successful, authenticate with Firebase
val account = task.getResult(ApiException::class.java)
Toast.makeText(this, "Berhasil login", Toast.LENGTH_SHORT).show()
startActivity(Intent(this, MainActivity::class.java))
} catch (e: ApiException) {
// Google Sign In failed, update UI appropriately
Log.e("Error", "Google sign in failed ${e.message}")
// ...
}
}
}

}

Jika kurang jelas silahkan lihat ini https://gist.github.com/syahrizalakbar/2a69894d7359897de5bf98d6e1df7a7f

Agar halaman login yang muncul pada saat pertamakali aplikasi dibuka maka kita perlu mengubah launchernya di AndroidManifest seperti berikut :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="id.rdev.projectgooglesignin"
>

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
>
<activity android:name=".LoginActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
<activity android:name=".MainActivity">
</activity>
</application>

</manifest>

Setelah semuanya selesai, silahkan coba dijalankan dan dites apakah berhasil atau tidaknya.

berikut adalah hasilnya

--

--