Twitter Bird Gadget

Thursday 10 March 2016

Login With Google in Android Studio

Main Activity.java

package com.tikarye.testlogingoogleplus;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.NetworkImageView;
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.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener;


public class MainActivity extends AppCompatActivity implements View.OnClickListener, OnConnectionFailedListener {
   
//Signin button
   
private SignInButton signInButton;

   
//Signing Options
   
private GoogleSignInOptions gso;

   
//google api client
   
private GoogleApiClient mGoogleApiClient;

   
//Signin constant to check the activity result
   
private int RC_SIGN_IN = 100;

   
//TextViews
   
private TextView textViewName;
   
private TextView textViewEmail;
   
private NetworkImageView profilePhoto;

   
//Image Loader
   
private ImageLoader imageLoader;

   
@Override
   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);

       
//Initializing Views
       
textViewName = (TextView) findViewById(R.id.textViewName);
       
textViewEmail = (TextView) findViewById(R.id.textViewEmail);
       
profilePhoto = (NetworkImageView) findViewById(R.id.profileImage);

       
//Initializing google signin option
       
gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
                .requestEmail()
                .build();

        
//Initializing signinbutton
       
signInButton = (SignInButton) findViewById(R.id.sign_in_button);
       
signInButton.setSize(SignInButton.SIZE_WIDE);
       
signInButton.setScopes(gso.getScopeArray());

       
//Initializing google api client
        
mGoogleApiClient = new GoogleApiClient.Builder(this)
                .enableAutoManage(
this /* FragmentActivity */, this /* OnConnectionFailedListener */)
                .addApi(Auth.
GOOGLE_SIGN_IN_API, gso)
                .build();


       
//Setting onclick listener to signing button
       
signInButton.setOnClickListener(this);
    }

   
//This function will option signing intent
   
private void signIn() {
       
//Creating an intent
       
Intent signInIntent = Auth.GoogleSignInApi.getSignInIntent(mGoogleApiClient);

       
//Starting intent for result
       
startActivityForResult(signInIntent, RC_SIGN_IN);
    }

   
@Override
   
public void onActivityResult(int requestCode, int resultCode, Intent data) {
       
super.onActivityResult(requestCode, resultCode, data);
       
//If signin
       
if (requestCode == RC_SIGN_IN) {
            GoogleSignInResult result = Auth.
GoogleSignInApi.getSignInResultFromIntent(data);
           
//Calling a new function to handle signin
           
handleSignInResult(result);
        }
    }

   
//After the signing we are calling this function
   
private void handleSignInResult(GoogleSignInResult result) {
       
//If the login succeed
       
if (result.isSuccess()) {
           
//Getting google account
           
GoogleSignInAccount acct = result.getSignInAccount();

           
//Displaying name and email
           
textViewName.setText(acct.getDisplayName());
           
textViewEmail.setText(acct.getEmail());

           
//Initializing image loader
           
imageLoader = CustomVolleyRequest.getInstance(this.getApplicationContext())
                    .getImageLoader();

           
imageLoader.get(acct.getPhotoUrl().toString(),
                    ImageLoader.getImageListener(
profilePhoto,
                            R.mipmap.
ic_launcher,
                            R.mipmap.
ic_launcher));

           
//Loading image
           
profilePhoto.setImageUrl(acct.getPhotoUrl().toString(), imageLoader);

        }
else {
            
//If login fails
           
Toast.makeText(this, "Login Failed", Toast.LENGTH_LONG).show();
        }
    }

   
@Override
   
public void onClick(View view) {
       
if (view == signInButton) {
           
//Calling signin
           
signIn();
        }
    }

   
@Override
   
public void onConnectionFailed(ConnectionResult connectionResult) {

    }
}

set permission in AndroidManifest.xml

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



build.gradle(Module:app)

apply plugin: 'com.android.application'

apply plugin: 'com.google.gms.google-services'



android {

    compileSdkVersion 23

    buildToolsVersion "23.0.2"



    defaultConfig {

        applicationId "com.tikarye.testlogingoogleplus"

        minSdkVersion 11

        targetSdkVersion 23

        versionCode 1

        versionName "1.0"

    }

    buildTypes {

        release {

            minifyEnabled false

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        }

    }

}

dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])

    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:23.1.1'

    compile 'com.google.android.gms:play-services-auth:8.3.0'

    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
   }
 Final Output
Feel free to post your comments, queries and suggestions 
Cheers...:-)


No comments :

Post a Comment