用户无法使用Parse登录

时间:2014-11-23 02:16:21

标签: java android parse-platform

我使用Parse.com,我的应用程序应该让用户注册并登录。他们能够注册,此时我看到它们存储在Parse数据库中,但是当我尝试在登录活动中使用相同的用户名和密码时,它表示它不存在。在用户注册后,它会进入MainActivity,直到您退出,然后您无法重新登录。有任何帮助吗?

这是我的SignUp活动

public class SignupActivity extends ActionBarActivity {
EditText mName, mUsername, mEmail, mPassword, mPasswordConfirm;
Button mSignup, mCancel;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
    setContentView(R.layout.activity_signup);

    getActionBar().setDisplayHomeAsUpEnabled(true);
    mName = (EditText) findViewById(R.id.name);
    mUsername = (EditText) findViewById(R.id.username);
    mEmail = (EditText) findViewById(R.id.email);
    mPassword = (EditText) findViewById(R.id.password);
    mPasswordConfirm = (EditText) findViewById(R.id.confirm_password);
    mSignup = (Button) findViewById(R.id.signup_button);



    mSignup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            final String username = mUsername.getText().toString().trim();
            final String email = mEmail.getText().toString().trim();
            final String password = mPassword.getText().toString().trim();
            final String confirmedPassword = mPasswordConfirm.getText().toString().trim();
            final String name = mName.getText().toString().trim();



            if(username.isEmpty() || email.isEmpty() || password.isEmpty()){
                AlertDialog.Builder builder = new AlertDialog.Builder(SignupActivity.this);
                builder.setMessage("Item missing in Signup Fields")
                    .setPositiveButton("Ok", null)
                    .setTitle("Error Message");
                AlertDialog dialog = builder.create();
                dialog.show();                  
            }
            else if(!confirmPass(password, confirmedPassword)){
                AlertDialog.Builder builder = new AlertDialog.Builder(SignupActivity.this);
                builder.setMessage("Passwords do not match")
                    .setPositiveButton("Ok", null)
                    .setTitle("Error Message");
                AlertDialog dialog = builder.create();
                dialog.show();
            }
            else{                   
                ParseUser user = new ParseUser();
                user.setUsername(username);
                user.setPassword(password);
                user.setEmail(email);
                user.put("Name", name);

                setProgressBarIndeterminateVisibility(true);
                user.signUpInBackground(new SignUpCallback() {

                    @Override
                    public void done(ParseException e) {
                        setProgressBarIndeterminate(false);
                        if(e == null){
                            Intent intent = new Intent(SignupActivity.this, MainActivity.class);
                            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                            startActivity(intent);

                        }
                        else{
                            AlertDialog.Builder builder = new AlertDialog.Builder(SignupActivity.this);
                            builder.setMessage(e.getMessage())
                                .setTitle("Error Message")
                                .setPositiveButton("Ok", null);
                            AlertDialog dialog = builder.create();
                            dialog.show();
                        }

                    }
                });
            }

        }
    });


}
public boolean confirmPass(String password, String passwordConfirm){
    if(password.equals(passwordConfirm)){
        return true;
    }
    else return false;
}


}

这是我的LoginActivity     公共类LoginActivity扩展了ActionBarActivity {

EditText mUsername, mPassword;
Button mLogin;
TextView mSignup;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //Allows us to use progress circle
    requestWindowFeature(Window.FEATURE_PROGRESS);
    setContentView(R.layout.activity_login);

    //hides action bar
    getActionBar().hide();

    mUsername = (EditText) findViewById(R.id.username);
    mPassword = (EditText) findViewById(R.id.password);
    mLogin = (Button) findViewById(R.id.sign_in);
    mSignup = (TextView) findViewById(R.id.sign_up);

    //goes to signup page when clicked
    mSignup.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(LoginActivity.this, SignupActivity.class);
            startActivity(intent);

        }
    });

    //logs user in when clicked
    mLogin.setOnClickListener(new View.OnClickListener() {

        String username = mUsername.getText().toString().trim();
        String password = mPassword.getText().toString().trim();

        //checks to make sure user exists or doesn't exist to sign them in
        @Override
        public void onClick(View v) {
            ParseUser.logInInBackground(username, password, new LogInCallback() {

                //if user exists, do this
                @Override
                public void done(ParseUser user, ParseException e) {
                    if(e == null){
                        Intent intent = new Intent(LoginActivity.this, MainActivity.class);
                        Toast.makeText(LoginActivity.this, (CharSequence) user, Toast.LENGTH_LONG);
                        //makes sure you can't press "back" in the next activity and come back to Login page
                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
                        startActivity(intent);
                    }
                    //if user doesn't exist, show error message
                    else{
                        AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this);
                        builder.setMessage((CharSequence) username)
                        .setPositiveButton("Ok", null)
                        .setTitle("Error Message");
                        AlertDialog dialog = builder.create();
                        dialog.show();
                    }

                }
            });

        }
    });

}



}

这是我的MainActivity     公共类MainActivity扩展了ListActivity {

ParseQueryAdapter<ParseObject> mainAdapter;
CustomAdapter customAdapter;
ListView listView;
TextView ideaTitle;
ImageView icon;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ideaTitle = (TextView) findViewById(R.id.title);
    icon = (ImageView) findViewById(R.id.icon);



    ParseUser currentUser = ParseUser.getCurrentUser();


    if(currentUser == null){
        Intent intent = new Intent(MainActivity.this, LoginActivity.class);
        startActivity(intent);
    }else {
        Log.i("USERNAME", currentUser.getUsername());

         customAdapter = new CustomAdapter(this);             
          listView = (ListView) findViewById(android.R.id.list);
          listView.setAdapter(customAdapter);             
    }       
}

@Override
protected void onResume() {
    super.onResume();



}

 @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {

    //get selected items
     System.out.println(l);
     System.out.println(v);
     System.out.println(position);
     System.out.println(id);

     Toast.makeText(MainActivity.this, (int) position, Toast.LENGTH_LONG).show();
    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return super.onCreateOptionsMenu(menu);

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    switch(id){

    case R.id.add_idea:
        Intent add = new Intent(MainActivity.this, AddIdeaActivity.class);
        startActivity(add);
        break;

    case R.id.logout:
        ParseUser.logOut();
        Intent logout = new Intent(MainActivity.this, LoginActivity.class);
        logout.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        logout.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
        startActivity(logout);
        break;

    }

    return super.onOptionsItemSelected(item);
}

}

1 个答案:

答案 0 :(得分:0)

确保您的登录使用与主要活动相同的解析初始化会话。

在您的应用中创建新用户。

验证解析仪表板在用户表中显示新条目。

如果在Windows操作系统上,请使用curl从终端会话(cmd)登录您的应用程序。

如果你可以在解析休息Api文档中的登录指令后卷曲cli登录,那么你知道你登录活动有bug。