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

如何从android应用程序中删除解析用户?,android,parse-platform,Android,Parse Platform,我正在制作一个android应用程序,它有两种用户类型:管理员和普通用户管理员有能力控制解析数据库的编辑、添加和删除,但我遇到了一个关于删除用户的问题。这是我的代码,但它不起作用 final String userId = user.getUserId(); ParseQuery<ParseUser> query = ParseUser.getQuery(); query.whereEqualTo("objectid", userId);

我正在制作一个android应用程序,它有两种用户类型:管理员和普通用户管理员有能力控制解析数据库的编辑、添加和删除,但我遇到了一个关于删除用户的问题。这是我的代码,但它不起作用

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();
                }
            }

        });
final String userId=user.getUserId();
ParseQuery=ParseUser.getQuery();
query.whereEqualTo(“objectid”,userId);
getFirstInBackground(新的GetCallback(){
public void done(ParseUser对象,parsee异常){
//TODO自动生成的方法存根
试一试{
object.delete();
Toast.makeText(getApplicationContext(),
“已成功删除项目”+userId,Toast.LENGTH_LONG).show();
//程序解除();
}捕获(解析异常e1){
//TODO自动生成的捕捉块
e1.printStackTrace();
}
}
});

如果用户不能从客户端删除另一个用户,我们将不胜感激。它可以在云代码中使用
Parse.cloud.useMasterKey()
完成

(顺便说一句,发布的代码似乎甚至没有通过id获取用户。这可以理解为
whereEqualTo(“objectId”,someObjectId)
会找到一个对象,但parse为此提供了一种特殊的查询形式,称为
getInBackground()

编辑-在云代码中,函数将如下所示:

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);
    });
});
来自客户端(尽管我是java的外行):

HashMap params=newhashmap();
参数put(“userId”,userId);
ParseCloud.callFunctionInBackground(“deleteUserWithId”,参数,新函数回调(){
void done(对象结果,parsee异常){
如果(e==null){
//成功
}
}
});

可以通过Parse Rest API访问主密钥。只需编写一个Parse Cloud code函数来删除使用主密钥的用户,然后使用Parse Android API从管理员帐户调用该函数。

我不熟悉云代码。我可以从安卓应用程序访问它吗?安装时需要做一些管理。请参阅e doc here..设置完成后,您将使用javascript解析在nodejs服务器中运行的函数。有一个客户端api可以按名称调用您部署的函数。如果您愿意,我可以发布其中一个函数的外观。@GeorgesBadra-这回答了问题吗?@danh您说过用户不能从客户端应用中删除另一个用户。但是您发布了Java代码,我认为是android的。这与你的第一句话不矛盾吗?@HaroonKhan,答案中给出了两段代码。第一段是JS,在服务器上执行,可以删除用户。第二段只是显示如何从Java调用服务器代码。
 ParseUser user = ParseUser.getCurrentUser();
        user.deleteInBackground(new DeleteCallback() {
            @Override
            public void done(com.parse.ParseException e) {
                if (e == null) {
                   //user deleted
                } else {
                    ccd.showDialog(mContext, e.getMessage());
                    e.printStackTrace();
                }
            }
        });
 ParseUser user = ParseUser.getCurrentUser();
        user.deleteInBackground(new DeleteCallback() {
            @Override
            public void done(com.parse.ParseException e) {
                if (e == null) {
                   //user deleted
                } else {
                    ccd.showDialog(mContext, e.getMessage());
                    e.printStackTrace();
                }
            }
        });