Android 解析:无效的用户名、密码

Android 解析:无效的用户名、密码,android,parse-platform,Android,Parse Platform,我正在使用数据库解析API,并尝试使用它提供的用户名服务。我从教程中了解到,要登录,请执行以下操作: ParseUser.logInInBackground("Jerry", "showmethemoney", new LogInCallback() { public void done(ParseUser user, ParseException e) { if (user != null) { // Hooray! The user is logged in.

我正在使用数据库解析API,并尝试使用它提供的用户名服务。我从教程中了解到,要登录,请执行以下操作:

ParseUser.logInInBackground("Jerry", "showmethemoney", new LogInCallback() {
  public void done(ParseUser user, ParseException e) {
    if (user != null) {
      // Hooray! The user is logged in.
    } else {
      // Signup failed. Look at the ParseException to see what happened.
    }
  }
});
如果登录失败,我只是想知道如何判断是因为输入的用户名无效,还是因为密码。我知道您可以使用e.getCode()来获取发生的错误类型,但是从这个站点我找不到任何与无效用户名/密码有关的错误代码

多谢各位
james

解析异常的错误代码记录在中。

区分无效用户和无效密码似乎存在安全风险。此信息将让黑客测试帐户名,直到应用程序给出无效密码响应,这将让黑客至少知道有效用户的用户名。因此,我认为Parse故意使这变得困难


但是,可以使用搜索具有给定用户名的用户的查询来执行此操作。如果查询未返回任何用户,则用户名无效。如果用户名返回用户,则密码无效。

这是我在一个应用程序中检查用户名/密码有效性时所做的操作。此方法针对ParseUser类提交查询,如果传递的用户名存在,则返回true;如果存在,则您知道用户名有效

(外部检查ParseException.OBJECT_NOT_FOUND-结合此检查,我们可以判断用户是否需要注册或密码无效。)

公共布尔查询属性(字符串用户名){
ParseQuery queryuserlist=ParseUser.getQuery();
queryuserlist.whereEqualTo(“用户名”,用户名);
试一试{
//尝试查找具有指定凭据的用户。
返回(queryuserlist.count()!=0)?真:假;
}捕获(解析异常){
返回false;
}
}

希望这能帮助一些人解决这个问题

根据我自己的测试,如果用户的凭据无效,它看起来会使用代码101(ObjectNotFound)。我不建议特别检查是否是因为用户名或密码,特别是出于isaach1000提到的安全原因。但是,如果必须,请参阅Spencer的答案。

这并不能解决问题,因为您没有指定哪个错误代码表示无效用户名和/或无效密码Yes isaach1000是正确的。我试着看了一下,但找不到相关的错误代码
public boolean queryCredentials(String username) {
        ParseQuery<ParseUser> queryuserlist = ParseUser.getQuery();
        queryuserlist.whereEqualTo("username", username);
        try {
            //attempt to find a user with the specified credentials.
            return (queryuserlist.count() != 0) ? true : false;
        } catch (ParseException e) {
            return false;
        }
    }