如何从Android应用程序中删除解析用户?

Geo*_*dra 2 android parse-platform

我正在制作一个Android应用程序,其中有2个UserTypes是管理员和普通用户,管理员有能力控制Parse数据库编辑,添加和删除但是我遇到了有关删除用户的问题,这里是我的代码,但它不是工作的

final String userId = user.getUserId();
         ParseQuery<ParseUser> query = ParseUser.getQuery();
         query.whereEqualTo("objectid", userId);

         query.getFirstInBackground(new GetCallback<ParseUser>() {



            public void done(ParseUser object, ParseException e) {
                 // TODO Auto-generated method stub
                 try {
                    object.delete();
                    Toast.makeText(getApplicationContext(),
                            "Successfully deleted Project"+userId, Toast.LENGTH_LONG).show();
                    //prog.dismiss();

                } catch (ParseException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }

        });
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激thx

dan*_*anh 5

用户无法从客户端删除其他用户.它可以在云代码中完成Parse.Cloud.useMasterKey().

(顺便说一下,看起来发布的代码甚至没有通过id获取用户.这将有理由whereEqualTo("objectId", someObjectId)找到一个对象,但解析为此调用提供了一种特殊形式的查询getInBackground(). 请参阅Parse文档.查询.

编辑 - 在云代码中,函数将是这样的:

Parse.Cloud.define("deleteUserWithId", function(request, response) {
    Parse.Cloud.useMasterKey();
    var userId = request.params.userId;
    var query = new Parse.Query(Parse.User);
    query.get(userId).then(function(user) {
        return user.destroy();
    }).then(function() {
        response.success(user);
    }, function(error) {
        response.error(error);
    });
});
Run Code Online (Sandbox Code Playgroud)

从客户端(虽然我是一个java dilettante):

HashMap<String, String> params = new HashMap<String, String>();
params.put("userId", userId);
ParseCloud.callFunctionInBackground("deleteUserWithId", params, new FunctionCallback<Float>() {
   void done(Object result, ParseException e) {
       if (e == null) {
           // success
       }
   }
});
Run Code Online (Sandbox Code Playgroud)