如何在应用程序生命周期中保持用户登录?
题
我在让用户在我的应用程序生命周期中保持登录时遇到问题,“登录”位于主要活动上,当启动另一个活动时,我仍然登录并且可以将数据上传到quickblox,但是在我开始之后另一个活动,然后再次启动我将数据上传到 Quickblox 的活动,尝试上传数据时出现错误:“需要令牌”...
编辑:
QBSettings.getInstance().fastConfigInit(String.valueOf(APP_ID), AUTH_KEY, AUTH_SECRET);
QBUser user = new QBUser("login", "password");
QBAuth.createSession(user, this, QBQueries.SIGN_IN);
解决方案
我认为这是另一个问题
“需要令牌”意味着您没有创建会话并尝试执行其他查询
您必须正确创建一个会话
QBAuth.createSession(new QBCallbackImpl() {
@Override
public void onComplete(Result result) {
if (result.isSuccess()) {
// do other requests here
//
} else {
handleErrors(result);
}
}
});
.
如果它不是您的问题 - 请在您的问题中提供更多代码
upd
1)尝试检查令牌for null
try {
String token = BaseService.getBaseService().getToken();
if(token == null){
// recreate session here
}
} catch (BaseServiceException e) {
e.printStackTrace();
}
. 其他提示
我不确定如何使用您在这里使用的这个 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
不隶属于 StackOverflow