1

I have integrated google and facebook login as well as simple login using their respective methods. But after successful signing, I want to manage session of login and logout that means at a time only one login type can use. If user already login with one of them then other login methods are disable. After logout user can login from one of the three methods.

I try to manage session using shared preference but it works only for simple login not for facebook and google login. Is there any other method for session management in android.

Please help, Thanks in advance.

Ekta Bhawsar
  • 746
  • 11
  • 26

1 Answers1

0

Their is no concept of Session management in Android. You have to save login status in SharedPreference or Database when user login success.

For sharedPreference refer Store login data in android

                    **FACEBOOK**

To get an facebook active session call following code in your function

void isFacebookActiveSession(){
     Log.d("FacebookLogin"," login from Fb");
     facebookSession = Session.getActiveSession();
     Log.d("FacebookLogin"," Fb session = "+facebookSession);
     facebookSession.openActiveSession(this, true, statusCallback);
}

and implement callback like.

Session.StatusCallback statusCallback = new Session.StatusCallback() {
        @Override
        public void call(final Session session, SessionState sessionState, Exception e) {
            if (session.getPermissions().size() > 0) {
                Request request = Request.newMeRequest(session,
                        new Request.GraphUserCallback() {
                            @Override
                            public void onCompleted(GraphUser user, Response response) {
                                // If the response is successful
                                if (session == Session.getActiveSession()) {
                                    if (user != null) {
                                       // use is login and jump to another activity or do whatever your requiements
                                    }else{
                                        // login page
                                    }   

                                }
                            }
                        });
                request.executeAsync();
            }
            else {
                if (facebookSession != null)
                facebookSession.close();
            }
        }
    };

To check google plus login status.

googleClient = new GoogleApiClient.Builder(this)
                            .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
                                @Override
                                public void onConnected(Bundle bundle) {
                                    googleClient.disconnect();
                                    // already log in jump to another activity
                                }

                                @Override
                                public void onConnectionSuspended(int i) {
                                    if(loginAttempts < MAXIMUM_ATTEMPTS) {
                                        googleClient.connect();
                                        loginAttempts++; // try to reattempt 
                                    }
                                }
                            })
                            .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() {
                                @Override
                                public void onConnectionFailed(ConnectionResult connectionResult) {
                                   // Not logged in redirect login page
                                    googleClient.disconnect();
                                }
                            })
                            .addApi(Plus.API)
                            .addScope(Plus.SCOPE_PLUS_LOGIN)
                            .build();
                    googleClient.connect();
Community
  • 1
  • 1