Mengintegrasikan Login Google di Aplikasi Android

Dalam tutorial ini, kita akan mengintegrasikan fungsi Google Sign-In di aplikasi Android kita menggunakan Google API. Menggabungkan Google API di aplikasi Android membantu pengguna login menggunakan akun Google.

Untuk mengintegrasikan API Google Signin di aplikasi kita, kita perlu mengonfigurasi aplikasi kami ke akun developer Google dan mendownload file 'google-service.json' untuk aplikasi Android.

Langkah-langkah untuk mengonfigurasi Aplikasi Android di Akun Developer Google

1. Buat akun developer Google di https://developers.google.com/identity/sign-in/android/start-integrating">https://developers.google.com/identity/sign-in/android/start-integrating dan klik 'GET A CONFIGURATION FILE'.

2. Isi semua detail aplikasi dan pilih negara/wilayah Anda dan klik 'Pilih dan konfigurasikan layanan'.

3. Setelah berhasil membuat konfigurasi dukungan Google app, konfigurasi tersebut akan dialihkan ke jendela berikutnya untuk memilih layanan Google. Kita akan memilih layanan Login Google.

Login Google


4. Sekarang, kita perlu memberikan sertifikasi penandatanganan SHA-1 kunci aplikasi kita.
5. Ada dua cara yang berbeda untuk menghasilkan kunci sertifikasi SHA-1.

  • Dengan menggunakan prompt perintah.
  • Windows :

    keytool -exportcert -list -v \  
    -alias androiddebugkey -keystore %USERPROFILE%\.android\debug.keystore  


    Mac/Linux :

    keytool -exportcert -list -v \  
    -alias androiddebugkey -keystore ~/.android/debug.keystore  


  • Dengan Android Studio itu sendiri :
    • Buka proyek Android.
    • Buka tab Gradle dari panel sisi kanan.
    • Klik dua kali pada 'signingReport'.
    • Kita akan menemukan kunci APLIKASI SHA-1 kami di "Konsol Gradle".


6. Tempelkan kunci SHA-1 yang dihasilkan ke layanan Login Google dan klik "AKTIFKAN LOGIN GOOGLE" dan "Buat file sertifikasi".

7. Sekarang unduh file 'google-services.json' untuk mengintegrasikannya ke dalam aplikasi Android.


Contoh Integrasikan Login Google di aplikasi Android

Dalam contoh ini, kita akan mengintegrasikan Google Sign-In di aplikasi Android. Setelah pengguna berhasil login melalui Google Sign-In, kita akan mengarahkan ke aktivitas berikutnya (ProfileActivity) dan mengambil detail pengguna.

Kita perlu menempelkan file 'google-services.json' yang diunduh di direktori aplikasi proyek Android kita.

Login Google


Izin yang Diperlukan

Tambahkan izin Internet dalam file AndroidMenifest.xml.

<uses-permission android:name="android.permission.INTERNET" />  

Tambahkan dependensi berikut dalam file build.gradle.

File : build.gradle (Project)

dependencies{  
classpath 'com.google.gms:google-services:3.1.0'  
}  


File : build.gradle(Module)

dependencies {  
    implementation 'com.google.android.gms:play-services-auth:11.6.0'  
    implementation 'com.github.bumptech.glide:glide:3.7.0'  
}  
apply plugin: 'com.google.gms.google-services'  


Tambahkan TextView dan Google SignInButton di activity_main.xml.

File : activity_main.xml

<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:app="http://schemas.android.com/apk/res-auto"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    tools:context="gloginexample.example.com.MainActivity">  
 
    <TextView  
        android:id="@+id/textView"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_marginLeft="20dp"  
        android:layout_marginRight="20dp"  
        android:textSize="20dp"  
        android:text="This is main activity, sign in to move next activity." />  
 
    <com.google.android.gms.common.SignInButton  
        android:layout_width="match_parent"  
        android:layout_height="wrap_content"  
        android:id="@+id/sign_in_button"  
        android:layout_marginLeft="20dp"  
        android:layout_marginRight="20dp"  
        android:layout_alignParentBottom="true"  
        android:layout_marginBottom="20dp">  
 
    </com.google.android.gms.common.SignInButton>  
 
</RelativeLayout>  


Di kelas MainActivity.java, kita memanggil metode Auth.GoogleSignInApi.getSignInIntent() untuk login melalui Google Sign-In API.
Antarmuka GoogleApiClient.OnConnectionFailedListener Google API menggantikan metode yang tidak terimplementasi, onConnectionFailed(ConnectionResult) yang mengembalikan hasil kegagalan koneksi. Kelas GoogleApiClient digunakan untuk mengelola koneksi antara aplikasi Android dan Google Sign-In API.

File : MainActivity.java

package gloginexample.example.com;  
 
import android.content.Intent;  
import android.support.annotation.NonNull;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.TextView;  
import android.widget.Toast;  
 
import com.google.android.gms.auth.api.Auth;  
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;  
import com.google.android.gms.auth.api.signin.GoogleSignInResult;  
import com.google.android.gms.common.ConnectionResult;  
import com.google.android.gms.common.SignInButton;  
import com.google.android.gms.common.api.GoogleApiClient;  
 
public class MainActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {  
    SignInButton signInButton;  
    private GoogleApiClient googleApiClient;  
    TextView textView;  
    private static final int RC_SIGN_IN = 1;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
 
        GoogleSignInOptions gso =  new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)  
                .requestEmail()  
                .build();  
        googleApiClient=new GoogleApiClient.Builder(this)  
                .enableAutoManage(this,this)  
                .addApi(Auth.GOOGLE_SIGN_IN_API,gso)  
                .build();  
 
 
 
        signInButton=(SignInButton)findViewById(R.id.sign_in_button);  
        signInButton.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View view) {  
                Intent intent = Auth.GoogleSignInApi.getSignInIntent(googleApiClient);  
                startActivityForResult(intent,RC_SIGN_IN);  
            }  
        });  
 
 
    }  
 
 
    @Override  
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {  
 
    }  
 
    @Override  
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
        super.onActivityResult(requestCode, resultCode, data);  
        if(requestCode==RC_SIGN_IN){  
            GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);  
            handleSignInResult(result);  
        }  
    }  
    private void handleSignInResult(GoogleSignInResult result){  
        if(result.isSuccess()){  
            gotoProfile();  
        }else{  
            Toast.makeText(getApplicationContext(),"Sign in cancel",Toast.LENGTH_LONG).show();  
        }  
    }  
    private void gotoProfile(){  
        Intent intent=new Intent(MainActivity.this,ProfileActivity.class);  
        startActivity(intent);  
    }  
}  


Tambahkan komponen berikut dalam activity_profile.xml.

File : activity_profile.xml

<?xml version="1.0" encoding="utf-8"?>  
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:app="http://schemas.android.com/apk/res-auto"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent"  
    android:layout_height="match_parent"  
    tools:context="gloginexample.example.com.ProfileActivity">  
 
    <LinearLayout  
        android:layout_width="match_parent"  
        android:layout_height="match_parent"  
        android:gravity="center"  
        android:orientation="vertical">  
        <ImageView  
            android:layout_width="80dp"  
            android:layout_height="80dp"  
            android:id="@+id/profileImage"  
            />  
        <TextView  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:id="@+id/name"  
            android:text="name"  
            android:textSize="20dp"  
            android:layout_marginTop="20dp"/>  
        <TextView  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:id="@+id/email"  
        android:textSize="20dp"  
        android:text="email"  
        android:layout_marginTop="20dp"/>  
        <TextView  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:id="@+id/userId"  
            android:textSize="20dp"  
            android:text="id"  
            android:layout_marginTop="20dp"/>  
        <Button  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:id="@+id/logoutBtn"  
            android:text="Logout"  
            android:layout_marginTop="30dp"/>  
    </LinearLayout>  
 
</RelativeLayout>  


Buat kelas ProfileActivity.java di mana kita akan menampilkan detail pengguna setelah login berhasil.

ProfileActivity.java Di kelas ini, kita akan mengambil detail pengguna jika pengguna berhasil login. Kelas GoogleSignInResult mengimplementasikan antarmuka Result yang mewakili hasil akhir dari penerapan metode API Google Play Services.

Kelas GoogleSignInAccount menyimpan informasi dasar pengguna.

File : ProfileActivity.java

package gloginexample.example.com;  
 
import android.content.Intent;  
import android.support.annotation.NonNull;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.Button;  
import android.widget.ImageView;  
import android.widget.TextView;  
import android.widget.Toast;  
 
import com.bumptech.glide.Glide;  
import com.google.android.gms.auth.api.Auth;  
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;  
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;  
import com.google.android.gms.auth.api.signin.GoogleSignInResult;  
import com.google.android.gms.common.ConnectionResult;  
import com.google.android.gms.common.api.GoogleApiClient;  
import com.google.android.gms.common.api.OptionalPendingResult;  
import com.google.android.gms.common.api.ResultCallback;  
import com.google.android.gms.common.api.Status;  
 
public class ProfileActivity extends AppCompatActivity implements GoogleApiClient.OnConnectionFailedListener {  
    Button logoutBtn;  
    TextView userName,userEmail,userId;  
    ImageView profileImage;  
    private GoogleApiClient googleApiClient;  
    private GoogleSignInOptions gso;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_profile);  
 
        logoutBtn=(Button)findViewById(R.id.logoutBtn);  
        userName=(TextView)findViewById(R.id.name);  
        userEmail=(TextView)findViewById(R.id.email);  
        userId=(TextView)findViewById(R.id.userId);  
        profileImage=(ImageView)findViewById(R.id.profileImage);  
 
        gso =  new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)  
                .requestEmail()  
                .build();  
 
        googleApiClient=new GoogleApiClient.Builder(this)  
                .enableAutoManage(this,this)  
                .addApi(Auth.GOOGLE_SIGN_IN_API,gso)  
                .build();  
 
 
        logoutBtn.setOnClickListener(new View.OnClickListener() {  
            @Override  
            public void onClick(View view) {  
                Auth.GoogleSignInApi.signOut(googleApiClient).setResultCallback(  
                        new ResultCallback<Status>() {  
                            @Override  
                            public void onResult(Status status) {  
                                if (status.isSuccess()){  
                                    gotoMainActivity();  
                                }else{  
                                    Toast.makeText(getApplicationContext(),"Session not close",Toast.LENGTH_LONG).show();  
                                }  
                            }  
                        });  
            }  
        });  
    }  
 
    @Override  
    protected void onStart() {  
        super.onStart();  
        OptionalPendingResult<GoogleSignInResult> opr= Auth.GoogleSignInApi.silentSignIn(googleApiClient);  
        if(opr.isDone()){  
            GoogleSignInResult result=opr.get();  
            handleSignInResult(result);  
        }else{  
            opr.setResultCallback(new ResultCallback<GoogleSignInResult>() {  
                @Override  
                public void onResult(@NonNull GoogleSignInResult googleSignInResult) {  
                    handleSignInResult(googleSignInResult);  
                }  
            });  
        }  
    }  
    private void handleSignInResult(GoogleSignInResult result){  
        if(result.isSuccess()){  
            GoogleSignInAccount account=result.getSignInAccount();  
            userName.setText(account.getDisplayName());  
            userEmail.setText(account.getEmail());  
            userId.setText(account.getId());  
            try{  
                Glide.with(this).load(account.getPhotoUrl()).into(profileImage);  
            }catch (NullPointerException e){  
                  Toast.makeText(getApplicationContext(),"image not found",Toast.LENGTH_LONG).show();  
            }  
 
        }else{  
            gotoMainActivity();  
        }  
    }  
    private void gotoMainActivity(){  
        Intent intent=new Intent(this,MainActivity.class);  
        startActivity(intent);  
    }  
    @Override  
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {  
 
    }  
}  


Output :

Login Google
Login Google


Berlangganan update artikel terbaru via email:

0 Response to "Mengintegrasikan Login Google di Aplikasi Android"

Posting Komentar

Iklan Atas Artikel

Iklan Bawah Artikel