无论如何都要将ParseUser
保存到手机,以便下次用户无需网络连接即可登录。我已在https://parse.com/docs/android/api/com/parse/ParseUser.html检查了文档,但无法找到与{ParseObject}类似的saveEventually
或pin
的内容。目前,我必须在离线模式(无网络连接)时单独保存用户名和密码(使用SharedPreference
),但由于我确实需要ParseUser对象以保存与其他实体的关系,因此它不好。
我现在提出的唯一解决方案是使用SharedPreference
中存储的敏感数据(用户名,密码)再次登录用户,以便在拥有网络时保存关系。但是,这种方式在安全性方面并不好,因为我必须将密码存储在SharedPreference
的纯文本中才能登录到Parse。
(来自Parse Google Group的重新发帖。我已经把头发撕了2天了)
答案 0 :(得分:1)
您必须仅使用共享首选项。如果Parse用户接受了这样的用户名和密码,请保存在首选项中:
mPrefs = getApplicationContext().getSharedPreferences("cumulus",MODE_PRIVATE);
uname = username.getText().toString();
pass = password.getText().toString();
ParseUser.logInInBackground(uname, pass,
new LogInCallback() {
@Override
public void done(ParseUser user,
com.parse.ParseException e) {
// TODO Auto-generated method stub
if (user != null) {
// If user exist and authenticated, send user to Welcome.class
if(getFirstRun()){
//user.getObjectId();
Editor ed = mPrefs.edit();
ed.putString("user", uname);
ed.putString("pass", pass);
ed.putString("id", user.getObjectId());
ed.commit();
//userid=user.getObjectId();
new GetData().execute();
}else{
Editor ed = mPrefs.edit();
ed.putString("user", uname);
ed.putString("pass", pass);
ed.putString("id", user.getObjectId());
ed.commit();
//userid=user.getObjectId();
Intent intent = new Intent(SignInActivity.this,MainActivity.class);
startActivity(intent);
finish();
}
} else {
Toast.makeText(
getApplicationContext(),
"Error: "+e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
});
public boolean getFirstRun() {
return mPrefs.getBoolean("firstRun", true);
}
public void setRunned() {
SharedPreferences.Editor edit = mPrefs.edit();
edit.putBoolean("firstRun", false);
edit.commit();
}
希望这会对你有所帮助。