2014-01-10 49 views
1

我有问题让用户登录我所有的应用程序生活,“登录”是在主要活动,当开始另一个活动,我仍然在里面,我可以上传数据到quickblox,但后我开始另一个活动,然后重新开始,我上传的数据quickblox,我得到的错误时,试图上传数据activy:“令牌需要” ......如何让用户登录应用程序的生活?

编辑:

QBSettings.getInstance().fastConfigInit(String.valueOf(APP_ID), AUTH_KEY, AUTH_SECRET); 
    QBUser user = new QBUser("login", "password"); 
    QBAuth.createSession(user, this, QBQueries.SIGN_IN); 
+2

不应该有更多的代码?但是从你的问题来看,我相信你需要存储用户的令牌,并将它传递给每一个API请求(这是大多数API的工作原理)。 – raulriera

+1

你发布的代码不能不那么相关。请发布处理令牌和API请求的代码。 –

+0

如果我已经在唱歌我不需要“传递每一个API请求” – Cohelad

回答

1

我认为这是另外一个问题

“令牌需要”的意思是你没有创建会话,并试图执行其他查询

您必须先正确创建会话

 QBAuth.createSession(new QBCallbackImpl() { 
      @Override 
      public void onComplete(Result result) { 
       if (result.isSuccess()) { 
        // do other requests here 
        // 
       } else { 
        handleErrors(result); 
       } 
      } 
     }); 

如果这不是你的问题 - 请你的问题提供更多的代码

UPD

1)请检查令牌为空

try { 
    String token = BaseService.getBaseService().getToken(); 
    if(token == null){ 
     // recreate session here 
    } 
} catch (BaseServiceException e) { 
    e.printStackTrace(); 
} 
+0

谢谢,这不是我的问题,我没有问题登录,它的工作很好,我可以上传和下载数据没有任何问题,我的问题是,在我的应用程序一段时间后(从活动转移到活动所以..)随机它停止工作 - 就像它正在执行'注销'它自我 – Cohelad

+1

嗯,看起来像令牌变为空。 尝试记录每次一个令牌BaseService.getBaseService()。getToken() 并检查,如果它由于某种原因为空 - 重新创建一个会话 –

+0

谢谢,我会试试这个.. Igor,你是最棒的!继续.. – Cohelad

0

林不知道如何使用这里使用的API,但如果你想要一个备用的建议,我总是使用SharedPreferences来保存用户会话。

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(); 

而获得用户信息回:

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 
+0

谢谢,这不是我的问题,我在SharedPreferences上保存用户的详细信息,但在这个Api中,你只需要签署在Api请求中,您不需要再次签名,也不需要输入用户详细信息。 – Cohelad

相关问题