我已经集成了谷歌和Facebook登录以及使用各自方法的简单登录。但是在成功签名之后,我想管理登录和注销会话,这意味着一次只能使用一种登录类型。如果用户已使用其中一个登录,则禁用其他登录方法。注销后,用户可以从三种方法之一登录。
我尝试使用共享偏好管理会话,但它仅适用于简单登录而不适用于facebook和google登录。在android中是否还有其他会话管理方法。
请帮助,提前致谢。
答案 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();