¿Cómo mantener el inicio de sesión del usuario durante toda la vida de la aplicación?

StackOverflow https://stackoverflow.com//questions/21048282

  •  21-12-2019
  •  | 
  •  

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);
¿Fue útil?

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 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top