Parse.com Cloud Code - 为什么创建和保存对象需要useMasterKey()

时间:2015-12-18 19:30:06

标签: parse-platform

我正在尝试在创建新帐户时创建并保存新对象。我正在使用以下代码。

Parse.Cloud.afterSave(Parse.User, function(request) {
    var userDataObjectId = request.object.get("userDataObjectId");
    if(!userDataObjectId) {
        console.log("NEW USER");
        var userData = new Parse.Object("UserData");
        userData.save(null, {
            success: function(userData) {
                console.log("SUCCEEDED SAVING USERDATA");
            },
            error: function(userData, error) {
            }
        });
    }
});

我收到“新用户”日志输出,但确保保存UserData对象的唯一方法是添加Parse.Cloud.useMasterKey()

我不明白为什么需要Master密钥来创建和保存我没有放入任何类级权限的对象,甚至客户端可以创建和保存对象而没有任何问题!

我没有看到任何与创建和保存普通类对象所需的主密钥有关的内容。有人可以帮我解决这个问题吗?非常感谢!

编辑:按照Russel的说明,我在userData保存错误中得到以下输出。

##################################################
# Alert                                          #
##################################################
#                                                #
# Error: 209 invalid session token               #
#                                                #
#                                         [ OK ] #
#                                                #
##################################################

我搜索了这个特定的错误,并试图在某些SO帖子中重新安装类似suggessted的应用程序(Android)。这没有用。此外,如果相关,我已经启用了“需要可撤销会话”选项。

1 个答案:

答案 0 :(得分:0)

用户无法更改自己的用户对象。在这种情况下,没有登录用户(currentUser),因此您无法直接保存它,因此必须使用MasterKey。

请查看Android指南中的注册:https://parse.com/docs/android/guide#users-signing-up