2015-04-03 44 views
4

我试图抓取已加入群组的用户的ParseRelation。我没有问题,直到我加入Facebook登录。现在,当尝试将用户添加到关系并保存ParseObject时,出现“无法保存未验证的ParseUser”的错误。我可以加入由未登录Facebook的人创建的群组,并且我可以加入我创建的群组(我使用FB登录),但是获得与由Facebook登录的其他用户创建的群组错误。无法保存未通过身份验证的ParseUser

mJoinButton.setOnClickListener(new View.OnClickListener() {@ 
 
    Override 
 
    public void onClick(View v) { 
 
    ParseObject group = mGroups.get(getAdapterPosition()); 
 
    mJoinedRelation = group.getRelation(ParseConstants.KEY_JOINED_RELATION); 
 
    mJoinedRelation.add(mCurrentUser); 
 
    group.saveInBackground(new SaveCallback() { 
 

 
     @ 
 
     Override 
 
     public void done(ParseException e) { 
 
     if (e == null) { 
 
      Toast.makeText(mContext, "You have joined the group!", Toast.LENGTH_LONG).show(); 
 

 
     } else { 
 
      AlertDialog.Builder builder = new AlertDialog.Builder(mContext) 
 
      .setMessage(e.getMessage()) 
 
      .setTitle(R.string.login_error_title) 
 
      .setPositiveButton(android.R.string.ok, null); 
 
      AlertDialog dialog = builder.create(); 
 
      dialog.show(); 
 
     } 
 
     } 
 
    }); 
 
    } 
 
});

+0

mCurrentUser从哪里来?该用户是否已保存在数据库中?如果用户不在数据库中,则会出现此错误。此外,请注意Parse所具有的用户类的安全限制。如果您以用户A的身份登录,则无法修改用户B.不确定是否您正在尝试执行此操作,因为仅使用您提供的伪代码很难知道。你能否尝试添加更多的代码并解释整个流程? – 2015-04-08 10:58:41

+1

感谢您的帮助。我不想修改任何用户。我所要做的就是将一个指针添加到另一个类中的关系中。我可以通过从Facebook获取用户配置文件JSON对象并将每个单独片段保存到用户类中单独列中的Parse来解决此问题,而不是将JSON对象本身保存在列中。我不知道为什么这会修复它,但似乎有一个JSON对象会导致问题。即使保持代码完全一样,只要从Parse中删除JSON对象,用户就可以加入关系。也许这是一个错误? – Michael 2015-04-11 02:37:14

回答

3

如果您对parse.com User类检查ACL栏,你会看到它有公共读取,但它并没有为公共写,所以你无法更新行信息如果您没有以该用户身份登录。我相信如果你希望能够更新而不是登录ID,你将不得不添加公共写入,尽管我不会推荐它。另一个解决方案是创建一个ParseObject来存储非登录信息,这样你就可以从任何地方更新它,因为默认情况下ACL将被设置为Public Write。

相关问题