Tutoriel – Connexion à un compte Google via Android

16 août 2016 / Tutoriel / 1 commentaire

Connectez vous à votre compte Google+ via votre application Android !

Création du projet

Pour commencer, nous allons aller à cette adresse : Google developers. Cliquez sur Créer un projet :

tuto-google-creer-projet

Donnez un nom à votre projet et créez le.

Nous allons avoir besoin d’un fichier de configuration pour notre application Android, suivez ce lien : Google Android.

Choisissez Android App, sélectionnez le projet que vous venez de créer et donnez le nom du package de votre App.

tuto-google-config

Sur l’écran suivant, nous allons pouvoir choisir les services que nous souhaitons utiliser. On va sélectionner Google Sign-In, il va alors nous demander une clé SHA-1, pour l’obtenir, nous allons utiliser cette ligne :

"C:\Program Files\Java\jdk1.8.0_92\bin\keytool.exe" -list -v -keystore c:\users\huco\.android\debug.keystore

N’oubliez pas de remplacer huco par votre nom d’utilisateur, si un mot de passe vous est demandé appuyer simplement sur Enter.

tuto-google-sha

Copiez-collez ensuite la clé SHA-1 sur la page Google et activez Google Sign-In. Ceci va vous générer un fichier de configuration (google-services.json) que vous pouvez maintenant télécharger.

La configuration de Google est terminée, nous allons maintenant passer à Android.

Configuration du SDK

Pour commencer, nous allons inclure la librairie de Google. Ajoutez ce classpath au Gradle :

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

Et ajoutez la dépendance suivante :

compile 'com.google.android.gms:play-services-auth:8.3.0'
Passons maintenant à la vue XML, pour ajouter un bouton de connexion et un bouton de déconnexion :
<com.google.android.gms.common.SignInButton
    android:id="@+id/sign_in_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Sign out"
    android:id="@+id/button_sign_out"
    android:layout_below="@+id/sign_in_button"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="116dp" />
Ensuite, occupons nous d’implémenter la connexion dans notre activité.

Pour commencer, nous allons déclarer notre Api Google et une constante qui va nous permettre de vérifier le résultat obtenu :

private final int RC_SIGN_IN = 100;
private GoogleApiClient mGoogleApiClient;
Maintenant, configurons notre Api :
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
    .requestEmail()
    .build();
 
mGoogleApiClient = new GoogleApiClient.Builder(this)
    .enableAutoManage(this /* FragmentActivity */, this /* OnConnectionFailedListener */)
    .addApi(Auth.GOOGLE_SIGN_IN_API, gso)
    .build();
Et pour finir, déclarons les boutons et assignons leurs la fonction de connexion et de déconnexion :
SignInButton signInButton = (SignInButton) findViewById(R.id.sign_in_button);
signInButton.setSize(SignInButton.SIZE_WIDE);
signInButton.setScopes(gso.getScopeArray());
Button signOutButton = (Button) findViewById(R.id.button_sign_out);

signInButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);
        startActivityForResult(signInIntent, RC_SIGN_IN);
    }
});

signOutButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Auth.GoogleSignInApi.signOut(mGoogleApiClient).setResultCallback( 
            new ResultCallback<Status>() {
                @Override
                public void onResult(Status status) {
                    System.out.println("Signout OK");
                }
            });
    }
});

 Nous en avons fini avec le onCreate, implémentons maintenant un onActivityResult :

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == RC_SIGN_IN) {
        GoogleSignInResult result = Auth.GoogleSignInApi.getSignInResultFromIntent(data);
        if (result.isSuccess()) {
            GoogleSignInAccount acct = result.getSignInAccount();
            System.out.println("nom " + acct.getDisplayName());
            System.out.println("email " + acct.getEmail());
        } else {
            Toast.makeText(this, "Login Failed", Toast.LENGTH_LONG).show();
        }
    }
}

A l’intérieur, nous allons récupérer le résultat de la connexion, si elle réussit, j’ai choisi d’afficher le nom et l’email de la personne.

Dernière chose à effectuer avant de pouvoir lancer l’application, nous allons implémenter le onConnectionFailed :

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
    System.out.println("Connection failed");
}
Ceci est nécessaire pour initialiser correctement le GoogleApiClient. Il ne vous reste plus qu’à tester !

Qu'avez vous pensé de cet article ?

FacebookTwitterLinkedInPinterestViadeo

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

*

Baptiste Vaudey

Développeur chez huco

Catégorie Tutoriel.

Même catégorie

Le scribing : une nouvelle façon de prendre des notes
Tutoriel - Connexion à un compte Facebook via Android
Tutoriel – Intégration de PayPal à Android