Управление сеансом для простого входа в систему, входа в facebook, google и выхода из системы Android?

Я интегрировал вход в google и facebook, а также простой вход с использованием соответствующих методов. Но после успешного подписания я хочу управлять сеансом входа и выхода, что означает, что одновременно может использоваться только один тип входа. Если пользователь уже вошел в систему с одним из них, другие методы входа в систему отключены. После выхода пользователь может войти в систему одним из трех способов.

Я пытаюсь управлять сеансом, используя общие настройки, но он работает только для простого входа в систему, а не для входа в facebook и google. Есть ли другой метод управления сеансом в android.

Пожалуйста, помогите, заранее спасибо.


person Ekta Bhawsar    schedule 14.01.2016    source источник


Ответы (1)


У них нет концепции управления сеансом в Android. Вы должны сохранить статус входа в SharedPreference или База данных, когда пользователь login success.

Для sharedPreference см. Хранить данные для входа в Android

                    **FACEBOOK**

Чтобы получить активный сеанс facebook, вызовите следующий код в своей функции

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

и реализовать обратный вызов, например.

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();
            }
        }
    };

Чтобы проверить статус входа в Google Plus.

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();
person Community    schedule 14.01.2016
comment
Спасибо за ответ, попробую это сделать. - person Ekta Bhawsar; 14.01.2016