在android中以其他用户身份登录时编辑解析用户信息

时间:2015-06-27 10:27:12

标签: android parse-platform cloud-code

我在我的Android应用程序中使用parse.com。当我访问其他用户的个人资料时,我能够关注该用户,但当我跟随他时,会在当前登录用户的下一栏中输入值对象已更新,但与此同时,我所关注的用户值不会更新 它给予:

06-27 05:11:44.521: E/AndroidRuntime(2459): java.lang.IllegalArgumentException: Cannot save a ParseUser that is not authenticated.

这是我的Android代码     package com.example.wavie.parseQueryRunner;

import android.content.Context;

import com.parse.GetCallback;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseUser;

public class FollowUserClass {
    private String id;
    private Context context;

    public FollowUserClass(String id, Context context) {
        this.id = id;
        this.context = context;

    }

    public void follow() {
        ParseUser currentUser=ParseUser.getCurrentUser();
        currentUser.addUnique("following", id);
        try {
            currentUser.save();
            ParseQuery<ParseObject> query=new ParseQuery<ParseObject>("_User");
            query.getInBackground(id, new GetCallback<ParseObject>() {

                @Override
                public void done(ParseObject object, ParseException e) {
                    // TODO Auto-generated method stub
                    if(e==null && object!=null){
                        object.addUnique("followers", ParseUser.getCurrentUser().getObjectId());
                        try {
                            object.save();
                        } catch (ParseException e1) {
                            // TODO Auto-generated catch block
                            e1.printStackTrace();
                        }
                    }

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



    }
}

在代码段构造函数中获取我想要关注的用户的对象ID。首先它更新当前登录的用户在以下字段(数组)中添加了id。

然后我尝试通过添加行

在其他用户的对象中进行更新
    object.addUnique("followers", 
ParseUser.getCurrentUser().getObjectId());

但是当我保存它时,解析用户应该在ssaving之前进行身份验证

2 个答案:

答案 0 :(得分:2)

第二天我找到了答案,我问了这个问题。那时单一的方法就是部署云代码。 实际上我想要更新的用户是其他用户因此无法更新数据库中的某人其他信息。通过在服务器上部署云代码,可以在android(可能在js中)中提供解决方案来执行此操作。 parse提供了一个命令行工具来执行此操作 对于linux运行以下命令来安装 curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo / bin / bash

成功安装后,将在home / etc /中创建一个名为parse的文件夹。 现在键入命令解析$ configure accountkey -d  在终端上,它会询问您的解析凭据。 现在在终端上键入parse命令以选择一个现有的应用程序。 现在你在home / etc / parse编辑中打开main.js文件。 使用切换到终端部署代码 $ parse deploy命令。 现在你很高兴去了已部署的云代码

答案 1 :(得分:0)

错误提到了这里的问题。未对用户进行身份验证以执行操作。当用户更新parse中的行不是创建相应行的行时,会发生这种情况。

所以你可能应该给正在更新条目的用户提供写访问权。