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

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 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top