Android:更新ParseUsers的字段

pea*_*mak 13 android android-activity parse-platform

我正在使用ParseUser进行用户管理.拥有用户名(唯一),我计划查询User类以识别用户,然后将新分数添加到"score"字段,就像排行榜一样.编码如下:

码:

public void update_user_score(String username, int original_score, int add)
{
    final int new_score = original_score + add;  
    ParseQuery<ParseUser> query = ParseUser.getQuery();
    query.whereEqualTo("username", username);
    query.setLimit(1);

    query.findInBackground(new FindCallback() 
    {
          public void done(final ParseObject object, ParseException e) 
          {
            if (e == null) 
            {
                object.saveInBackground(new SaveCallback() 
                {
                    public void done(ParseException e) 
                    {
                        object.put("score", new_score);                                 
                        object.saveInBackground();                                      
                        onBackPressed();                            
                    }
                });
            }
          }
    });
}
Run Code Online (Sandbox Code Playgroud)

情况:它说明了这一点The type new FindCallback(){} must implement the inherited abstract method FindCallback.done(List, ParseException).我试过了FindCallback.done,发现它不成功.

题:

我想问一下如何使用给定的用户名更新用户的其他字段?谢谢!

小智 4

根据解析文档所述,

默认情况下,ParseUser 类是受保护的。存储在 ParseUser 中的数据只能由该用户修改。默认情况下,任何客户端仍然可以读取数据。因此,一些 ParseUser 对象经过身份验证并且可以修改,而其他对象是只读的。

具体来说,除非使用经过身份验证的方法(例如登录或注册)获取 ParseUser,否则您无法调用任何保存或删除类型的方法。这确保只有用户才能更改自己的数据。

下图说明了此安全策略:

ParseUser user = ParseUser.logIn("my_username", "my_password");
user.setUsername("my_new_username"); // attempt to change username
user.saveInBackground(); // This succeeds, since the user was authenticated on the device

// Get the user from a non-authenticated manner
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.getInBackground(user.getObjectId(), new GetCallback<ParseUser>() {
  public void done(ParseUser object, ParseException e) {
    object.setUsername("another_username");

    // This will throw an exception, since the ParseUser is not authenticated
    object.saveInBackground();
  }
});
Run Code Online (Sandbox Code Playgroud)

请通过此链接参考