无法保存未经过身份验证的ParseUser

时间:2015-04-03 00:49:05

标签: android facebook parse-platform

我正在尝试获取已加入群组的用户的ParseRelation。在我添加登录Facebook之前,我没有问题。现在,我尝试将用户添加到关系然后保存ParseObject时出现“无法保存未经过身份验证的ParseUser”错误。我可以加入由没有使用Facebook登录的人创建的群组,我可以加入我创建的群组(我已经使用FB登录),但是使用登录Facebook的其他用户创建了群组错误。

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

1 个答案:

答案 0 :(得分:3)

如果您在parse.com上检查User类上的ACL列,您将看到它具有公共读取功能,但它没有公共写入功能,因此如果您未登录,则无法更新行信息作为那个用户。我相信如果你希望能够更新而不记录id,你必须将Public Write添加到该用户的ACL中,尽管我不推荐它。另一个解决方案是创建一个ParseObject来存储非登录信息,这样你就可以从任何地方更新它,因为默认情况下ACL将被设置为Public Write。