¿Cómo mantener el inicio de sesión del usuario durante toda la vida de la aplicación?
Pregunta
Tengo problemas para mantener el inicio de sesión del usuario durante toda la vida de mi aplicación, el "iniciar sesión" está en la actividad principal, cuando inicio otra actividad todavía sigo conectado y puedo cargar datos en Quickblox, pero después de comenzar otra actividad y luego comenzar nuevamente la actividad en la que cargué datos en Quickblox, aparece un error cuando intento cargar datos:"se requiere token"...
Editar:
QBSettings.getInstance().fastConfigInit(String.valueOf(APP_ID), AUTH_KEY, AUTH_SECRET);
QBUser user = new QBUser("login", "password");
QBAuth.createSession(user, this, QBQueries.SIGN_IN);
Solución
creo que es otro problema
"Se requiere un token" significa que no creó una sesión e intentando realizar otra consulta
Tienes que crear correctamente una sesión primero
QBAuth.createSession(new QBCallbackImpl() {
@Override
public void onComplete(Result result) {
if (result.isSuccess()) {
// do other requests here
//
} else {
handleErrors(result);
}
}
});
Si no es un problema para usted, proporcione más código en su pregunta
upd
1) Trate de revisar el token para NULL
try {
String token = BaseService.getBaseService().getToken();
if(token == null){
// recreate session here
}
} catch (BaseServiceException e) {
e.printStackTrace();
}
Otros consejos
No estoy seguro de cómo usar esta API que estás usando aquí, pero si quieres una sugerencia alternativa, siempre he usado SharedPreferences
para guardar sesiones de usuario.
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor editor = settings.edit();
editor.putString("username", username); // Save the username with tag "username"
editor.putString("password", password); // Save the password with tag "password"
editor.commit();
Y para recuperar la información del usuario:
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
u = settings.getString("username", null);
p = settings.getString("password", null);
if(u == null && p == null) {...} // No saved user session, have user sign in
else {...} // User already logged in, go to main screen