Showing posts with label Google Login. Show all posts
Showing posts with label Google Login. Show all posts

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...:-)