我已经使用各自的方法集成了 google 和 facebook 登录以及简单登录。但是在成功签名后,我想管理登录和注销会话,这意味着一次只能使用一种登录类型。如果用户已经使用其中之一登录,则禁用其他登录方法。注销后用户可以从三种方法之一登录。
我尝试使用共享偏好来管理会话,但它仅适用于简单登录,不适用于 facebook 和 google 登录。在android中是否有任何其他的会话管理方法。
请帮助,在此先感谢。
我已经使用各自的方法集成了 google 和 facebook 登录以及简单登录。但是在成功签名后,我想管理登录和注销会话,这意味着一次只能使用一种登录类型。如果用户已经使用其中之一登录,则禁用其他登录方法。注销后用户可以从三种方法之一登录。
我尝试使用共享偏好来管理会话,但它仅适用于简单登录,不适用于 facebook 和 google 登录。在android中是否有任何其他的会话管理方法。
请帮助,在此先感谢。
他们在Android中没有会话管理的概念。当 user 时,您必须将登录状态保存在SharedPreference或Databaselogin 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();