In another article, we wrote about how to change a user’s password using Backendless Console. There are also ways to change a user’s password using API. In this post, we will review the API that can be used to change the password if a user can log in.
A different approach is needed when a user cannot log in for the reason that he/she forgot their password. That scenario, requiring a temporary password be created, is discussed here.
Backendless.UserService.login( "spidey@backendless.com", "greeng0blin", new AsyncCallback<BackendlessUser>() { @Override public void handleResponse( BackendlessUser user ) { user.setPassword( "MyNewPassword" ); Backendless.Data.of( BackendlessUser.class ).save( user, new AsyncCallback<BackendlessUser>() { @Override public void handleResponse( BackendlessUser backendlessUser ) { System.out.println( "User password has been changed" ); } @Override public void handleFault( BackendlessFault backendlessFault ) { System.out.println( "Server reported an error - " + backendlessFault.getMessage() ); } } ); } @Override public void handleFault( BackendlessFault backendlessFault ) { System.out.println( "Server reported an error - " + backendlessFault.getMessage() ); } } );
val user = Backendless.UserService.login("spidey@backendless.com", "greeng0blin") user.password = "myNewPassword" Backendless.Data.of(BackendlessUser::class.java).save(user, object : AsyncCallback { override fun handleResponse(response: BackendlessUser?) { Log.i(TAG, "User password has been changed") } override fun handleFault(fault: BackendlessFault?) { Log.e(TAG, fault?.message) } })
[Backendless.shared.userService loginWithIdentity:@"spidey@backendless.com" password:@"greeng0blin" responseHandler:^(BackendlessUser *loggedInUser) { loggedInUser.password = @"MyNewPassword"; [[Backendless.shared.data of:[BackendlessUser class]] updateWithEntity:loggedInUser responseHandler:^(BackendlessUser *updatedUser) { NSLog(@"User password has been changed"); } errorHandler:^(Fault *fault) { NSLog(@"Error: %@", fault.message); }]; } errorHandler:^(Fault *fault) { NSLog(@"Error: %@", fault.message); }];
Backendless.shared.userService.login(identity: "spidey@backendless.com", password: "greeng0blin", responseHandler: { loggedInUser in loggedInUser.password = "MyNewPassword" Backendless.shared.data.of(BackendlessUser.self).update(entity: loggedInUser, responseHandler: { updatedUser in print("User password has been changed") }, errorHandler: { fault in print("Error:\(fault.message ?? "")") }) }, errorHandler: { fault in print("Error:\(fault.message ?? "")") })
const Backendless = require('backendless') /* Or use `import Backendless from 'backendless'` for client side. If you don't use npm or yarn to install modules, you can add the following line <script src="//api.backendless.com/sdk/js/latest/backendless.min.js"></script> to your index.html file and use the global Backendless variable. */ Backendless.initApp('YOUR_APP_ID', 'YOUR_JS_API_KEY') const onLoginSuccess = user => { user.password = 'MyNewPassword' return Backendless.UserService.update(user) } const onPasswordUpdateSuccess = user => { console.log('User password has been changed') } const onError = error => { console.error('Server reported an error: ', error.message) console.error('error code: ', error.code) console.error('http status: ', error.status) } Backendless.UserService.login('spidey@backendless.com', 'greeng0blin') .then(onLoginSuccess) .then(onPasswordUpdateSuccess) .catch(onError)
var user = await Backendless.UserService.login("spidey@backendless.com", "greeng0blin"); user.password = "MyNewPassword"; Backendless.Data.of("Users").save(user.toJson()).then((response) => print("User password has been changed"));
Notice the sample shows user login first. This is required as the user identity must be established for the subsequent password update call to go through.