如何在 Parse 中修复“无效的用户名/密码”

Posted

技术标签:

【中文标题】如何在 Parse 中修复“无效的用户名/密码”【英文标题】:How to fix"Invalid username/password" in Parse 【发布时间】:2019-02-05 08:03:40 【问题描述】:

我正在使用解析服务器开发一个具有signupLogin 的应用程序,我可以在其中注册,但是当我尝试登录时它给了我异常

“无效的用户名/密码”

这是signUpLogIn 的代码,当signUpMode 处于活动状态时,用户会在signUpmode 处于非活动状态时按下按钮进行注册,即false 按钮​​充当登录并且用户可以登录,但是当我在这里时尝试登录它说“无效的用户名/密码”

  public void signUp(View view)
        
            editTextUser =(EditText) findViewById(R.id.userNameEdit);
            editTextPass =(EditText) findViewById(R.id.passWordEdit);

                if(editTextUser.getText().toString().matches("") || editTextPass.getText().toString().matches(""))
                
                    Toast.makeText(this,"Username and Password required",Toast.LENGTH_SHORT).show();
                
                else
                
                    if(SignupModeActive)
                    
                        ParseUser user = new ParseUser();
                        user.setUsername(editTextUser.getText().toString());
                        user.setPassword(editTextUser.getText().toString());
                        user.signUpInBackground(new SignUpCallback() 
                            @Override
                            public void done(ParseException e) 

                                    if(e == null)
                                    
                                        Log.i("saveInBackGround","SignUp Success");
                                        Intent intent = new Intent(MainActivity.this,UserslistActivity.class);
                                        startActivity(intent);
                                    
                                    else
                                        Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
                                    


                            
                        );


                    
                    else
                    
                            ParseUser.logInInBackground(editTextUser.getText().toString(),editTextPass.getText().toString(), new LogInCallback() 
                                @Override
                                public void done(ParseUser user, ParseException e) 
                                    if(user != null)
                                        Log.i("LogInBackGround","Login Succesfull");
                                        Intent logInintent = new Intent(MainActivity.this,UserslistActivity.class);
                                        startActivity(logInintent);
                                    
                                    else
                                    
                                        Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_LONG).show();
                                    
                                
                            );
                        


                    



                

【问题讨论】:

【参考方案1】:

//检查你的异常

public void signUp(View view)
        
            mEditTextUser =(EditText) findViewById(R.id.userNameEdit);
            mEditTextPass =(EditText) findViewById(R.id.passWordEdit);

                if(mEditTextUser .getText().toString().trim().length()==0 || editTextPass.getText().toString().trim().length()==0.matches(""))
                
                    Toast.makeText(this,"Username and Password required",Toast.LENGTH_SHORT).show();
                
                else
                
                 //Check SignupMode is true
   if(SignupModeActive)
                    
                        ParseUser user = new ParseUser();
                        user.setUsername(editTextUser.getText().toString());
                        user.setPassword(editTextUser.getText().toString());
                        user.signUpInBackground(new SignUpCallback() 
                            @Override
                            public void done(ParseException e) 

                                    if(e == null)
                                    
                                        Log.e("Exception",e.printStackTrace());
                                        Intent intent = new Intent(MainActivity.this,UserslistActivity.class);
                                        startActivity(intent);
                                    
                                    else
                                        Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_SHORT).show();
                                    


                            
                        );


                    
                    else
                    
                            ParseUser.logInInBackground(editTextUser.getText().toString(),editTextPass.getText().toString(), new LogInCallback() 
                                @Override
                                public void done(ParseUser user, ParseException e) 
                                    if(user != null)
                                        Log.i("LogInBackGround","Login Succesfull");
                                        Intent logInintent = new Intent(MainActivity.this,UserslistActivity.class);
                                        startActivity(logInintent);
                                    
                                    else
                                    
                                        Toast.makeText(MainActivity.this,e.getMessage(),Toast.LENGTH_LONG).show();
                                    
                                
                            );
                        


                    



                

【讨论】:

Signupmode 的数据类型是 boollen ,我将其初始化为 true 并检查其是否为 true 是否应该注册否则登录,当登录未登录时出现异常 异常是什么?【参考方案2】:

您的登录代码没问题,我会说您检查您提供的详细信息是否真实。也许他们不是任何具有该名称或密码的用户,您的提要是错误的。 我正在使用类似的代码,它工作正常。我的代码是:-

    ParseUser.logInInBackground(edtEmail.getText().toString(), 
    edtPassword.getText().toString(), new LogInCallback() 
                        @Override
                        public void done(ParseUser user, ParseException e) 
                            if (user != null && e == null) 
                                FancyToast.makeText(Login.this, user.get("username") + " is logged in successfully", FancyToast.LENGTH_LONG, FancyToast.SUCCESS, true).show();

                                transitionToWelcomePage();

                             else 
                                FancyToast.makeText(Login.this, e.getMessage(), FancyToast.LENGTH_LONG, FancyToast.ERROR, true).show();

                            
                        
                    );

【讨论】:

以上是关于如何在 Parse 中修复“无效的用户名/密码”的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01017: 使用 ODP.NET 托管驱动程序连接到 9i oracle 数据库时用户名/密码无效

如何在我的 android 应用程序中修复 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

Parse:如何重置本地数据存储?

如何修复:JSON.parse (<anonymous>) 位置 0 处的 JSON 中的意外标记 <

Android/Parse-如何处理来自 ParseQuery 的多个回调

如何在登录失败时显示错误消息?