3

我将 Parse 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() 来获取发生的错误类型,但是从这个站点https://parse.com/docs/android/api/我找不到任何与无效用户名有关的错误代码/密码

谢谢詹姆斯

4

4 回答 4

3

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

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

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

希望这可以帮助解决这个问题的人。

于 2013-07-13T16:43:52.587 回答
2

It seems to be a security risk to distinguish between invalid user and invalid password. This information would let a hacker test account names until the app gave an invalid password response, which would let the hacker know at least the username of a valid user. Therefore, I think Parse makes this difficult deliberately.

However, it may be possible to do this using a query that searches for users with the given username. If the query returns no users, the username is invalid. If the username returns a user, the password is invalid.

于 2013-05-14T03:18:44.500 回答
2

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

于 2014-05-22T06:41:37.993 回答
-1

ParseExceptions 的错误代码记录在Parse Android API 参考文档中的ParseException下。

于 2013-05-14T03:16:16.437 回答