在Android中进行简单登录,facebook,google登录和注销的会话管理?

时间:2016-01-14 06:54:50

标签: android android-studio android-sharedpreferences

我已经集成了谷歌和Facebook登录以及使用各自方法的简单登录。但是在成功签名之后,我想管理登录和注销会话,这意味着一次只能使用一种登录类型。如果用户已使用其中一个登录,则禁用其他登录方法。注销后,用户可以从三种方法之一登录。

我尝试使用共享偏好管理会话,但它仅适用于简单登录而不适用于facebook和google登录。在android中是否还有其他会话管理方法。

请帮助,提前致谢。

1 个答案:

答案 0 :(得分:0)

他们不是Android中会话管理的概念。 用户login success时,您必须在 SharedPreference 数据库中保存登录状态。

对于sharedPreference,请参阅Store login data in 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();