como manter o login do usuário durante a vida útil do aplicativo?
Pergunta
estou tendo problemas para manter o login do usuário durante toda a vida do meu aplicativo, o "login" está na atividade principal, quando inicio outra atividade ainda estou logado e posso fazer upload de dados para o quickblox, mas depois de começar outra atividade e, em seguida, iniciar novamente a atividade em que carreguei os dados no quickblox, recebo um erro ao tentar fazer o upload dos dados:"o token é obrigatório"...
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);
Solução
acho que é outro problema
"token é obrigatório" significa que você não criou sessão e está tentando realizar outra consulta
Você deve primeiro criar uma sessão corretamente
QBAuth.createSession(new QBCallbackImpl() {
@Override
public void onComplete(Result result) {
if (result.isSuccess()) {
// do other requests here
//
} else {
handleErrors(result);
}
}
});
Se não for um problema para você, forneça mais código em sua pergunta
Atualização
1) Tente verificar se o token é nulo
try {
String token = BaseService.getBaseService().getToken();
if(token == null){
// recreate session here
}
} catch (BaseServiceException e) {
e.printStackTrace();
}
Outras dicas
Não tenho certeza de como usar esta API que você está usando aqui, mas se quiser uma sugestão alternativa, sempre usei SharedPreferences
para salvar sessões do usuário.
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();
E para recuperar as informações do usuário:
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