在Parse.com中使用ParseUser更改密码和忘记密码

时间:2015-04-16 07:56:07

标签: android parse-platform

我正在使用Parse.com作为后端支持的应用程序。我使用 ParseUser 进行登录注册,但现在我必须实施更改密码忘记密码,但不知道如何实现它。请帮我实现这些功能。

我用来登录ParseUser的代码如下:

ParseUser.logInInBackground(str_email2, str_password2, new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException e) {
            dlg.dismiss();
            if(e == null)
            {
                Log.d(">>>","ObjId>>"+user.getObjectId()+"  Username>>>"+user.getUsername());

            }
            else
                loginUnSuccessful();
        }
    });

3 个答案:

答案 0 :(得分:11)

要申请新密码(如果用户忘记了密码),您可以使用:

ParseUser.requestPasswordResetInBackground("myemail@example.com",
                                           new RequestPasswordResetCallback() {
  public void done(ParseException e) {
    if (e == null) {
      // An email was successfully sent with reset instructions.
    } else {
      // Something went wrong. Look at the ParseException to see what's up.
    }
  }
});

要更改密码,您只需获取当前用户并执行以下操作:

ParseUser currentUser = ParseUser.getCurrentUser();
currentUser.setPassword("new_password");
currentUser.saveInBackground();

答案 1 :(得分:4)

在文档中,您有以下示例代码:

ParseUser.requestPasswordResetInBackground("myemail@example.com",
                                           new RequestPasswordResetCallback() {
  public void done(ParseException e) {
    if (e == null) {
      // An email was successfully sent with reset instructions.
    } else {
      // Something went wrong. Look at the ParseException to see what's up.
    }
  }
});

来源:https://parse.com/docs/android_guide#users-resetting

答案 2 :(得分:1)

您不能为未签名(匿名)的ParseUser重置密码。

如果您使用ParseUser的电子邮件功能,则可以像这样发送密码重置邮件

ParseUser.requestPasswordResetInBackground(
   stringEmail,
   new RequestPasswordResetCallback() {
     public void done(ParseException e) {
       ...
     }
   }
);

如果您不使用电子邮件功能,则需要像这样在您的main.js文件中编写云方法

Parse.Cloud.define("resetPassword", function (request, response) {
    Parse.Cloud.useMasterKey(); /*important*/
    var username = request.params.username;
    var password = request.params.password;
    var objUser = Parse.Object.extend("User");
    var qUser = new Parse.Query(objUser);
    qUser.equalTo("username", username);
    qUser.find().then(function (resultObj) {
        if(resultObj.length > 0){
            var userObj = resultObj[0];
          userObj.set("password", password);
          return userObj.save();
        } else {
          response.error("User does not exist");
        }
    }).then(function () {
        response.success("Password RESET DONE SUCCESSFULLY");
    }, function (error) {
        response.error("Error " + error);
    });
});

并像这样从您的应用中调用该方法

Map<String, Object> params = new HashMap<String, Object>();
params.put("password", password);
params.put("username", username);
ParseCloud.callFunctionInBackground("resetPassword", params, new FunctionCallback<String>() {
    @Override
    public void done(String response, ParseException e) {
        if (e == null) {
            ...
        } else {
            ..
        }
    }
});

通过这种方式,您可以使用用户名或手机号码来重置用户密码。