离线登录ParseUser

时间:2014-10-08 03:30:18

标签: java android parse-platform

无论如何都要将ParseUser保存到手机,以便下次用户无需网络连接即可登录。我已在https://parse.com/docs/android/api/com/parse/ParseUser.html检查了文档,但无法找到与{ParseObject}类似的saveEventuallypin的内容。目前,我必须在离线模式(无网络连接)时单独保存用户名和密码(使用SharedPreference),但由于我确实需要ParseUser对象以保存与其他实体的关系,因此它不好。

我现在提出的唯一解决方案是使用SharedPreference中存储的敏感数据(用户名,密码)再次登录用户,以便在拥有网络时保存关系。但是,这种方式在安全性方面并不好,因为我必须将密码存储在SharedPreference的纯文本中才能登录到Parse。

(来自Parse Google Group的重新发帖。我已经把头发撕了2天了)

1 个答案:

答案 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();
}

希望这会对你有所帮助。