2014-11-23 130 views
0

我正在使用Parse.com,我的應用應該讓用戶註冊並登錄。他們能夠註冊,在這一點上,我發現他們存儲在Parse數據庫中,但是當我嘗試在登錄活動中使用相同的用戶名和密碼時,它說它不存在。用戶註冊後,它會進入MainActivity,直到您註銷,然後您無法重新登錄。任何幫助?無法使用Parse登錄的用戶

這是我的註冊活動

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

}

回答

0

確保您的登錄名與主要活動使用相同的分析初始會話。

在您的應用程序中創建新用戶。

驗證解析儀表板顯示用戶表中的新條目。

如果在Windows操作系統上使用curl從終端會話(cmd)登錄到您的應用程序。

如果你可以curl cli登錄下面的解析rest API文件的指令,那麼你知道你登錄活動有bug。