Back4App | Flutter:如何通过ID更新_User的用户名与密码?
编辑Parse用户的用户名和密码的正确方法
错误原因分析
你遇到的状态码101(ObjectNotFound)问题,是因为User是Parse的内置特殊类,不能像普通自定义类那样直接用ParseObject('User')实例化并指定objectId来修改。这种方式创建的对象没有服务器端的对应记录元数据,导致服务器无法找到目标对象。
正确操作方式
1. 修改当前登录用户的信息
如果是修改当前已登录用户的用户名或密码,直接通过当前用户实例操作:
// 获取当前登录用户实例 ParseUser currentUser = await ParseUser.currentUser() as ParseUser; // 修改用户名 currentUser.set('username', '你的新用户名'); // 保存用户名修改 await currentUser.save(); // 单独修改密码(建议单独调用此方法,避免和其他字段一起保存时的权限问题) await currentUser.updatePassword('你的新密码');
2. 修改其他用户的信息(需权限)
若要修改其他用户,必须先通过查询获取目标用户对象,再进行修改:
// 创建User类查询 var userQuery = ParseQuery('User'); // 通过objectId获取目标用户 ParseUser? targetUser = await userQuery.getObject('ifBuLmgxQ5') as ParseUser?; if (targetUser != null) { // 修改用户名 targetUser.set('username', '目标用户新用户名'); // 修改密码(注意:此操作需要服务器端权限,可在Parse控制台配置或通过云代码实现) targetUser.set('password', '目标用户新密码'); // 保存修改 await targetUser.save(); }
注意事项
- 修改用户密码时,Parse有特殊的权限限制,建议通过
updatePassword方法处理当前用户密码,修改其他用户密码需确保你的应用有足够权限(比如在Parse控制台设置User类的写入权限,或通过云代码执行)。 - 所有修改操作需确保用户会话有效,避免因权限不足导致其他错误。
内容的提问来源于stack exchange,提问作者Flutter
相关产品推荐
相关产品推荐

