我正在使用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();
}
});
答案 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.
}
}
});
答案 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 {
..
}
}
});
通过这种方式,您可以使用用户名或手机号码来重置用户密码。