Parse.com主密钥不允许写PFUser currentUser

时间:2014-07-08 13:00:00

标签: javascript objective-c parse-platform

更新:简而言之,我想使用Master密钥,因为我需要用当前用户编写其他用户对象,但我不想覆盖所有安全性,我只想在一个中使用它功能。 this question中接受的答案提供了一个非常好的起点,但是我无法使其发挥作用。这是这个问题中的最后一个代码块。


我有两个独立的功能。第一个是纯粹的objective-c,它会从currentUser的{​​{1}}中删除用户。在我将不同的CloudCode功能添加到不同的视图控制器之前,它运行良好没有任何问题。 CloudCode函数使用主密钥并将firstRelation添加到currentUser的{​​{1}}&将otherUser添加到sampleRelation的{​​{1}} otherUsercurrentUsersampleRelation类中的两个不同列。

问题是当我从firstRelation的{​​{1}}(当前用户)删除用户时,我的应用程序崩溃了,因为用户必须通过logIn或signUp进行身份验证。实际上我不理解这一点,因为在这种情况下我用sampleRelation而不是其他用户编写User,所以它必须没有任何问题(并且在CloudCode之前工作)。

我几乎可以肯定,因为我正在使用CloudCode的主密钥,但我不知道如何避免它。其他所有内容仍然有效,例如我可以使用currentUser上传图片。

以下是我用于CloudCode的代码,JavaScript对我来说完全不为人知,也许有人会看到导致问题的原因。

firstRelation

当我尝试删除对象时崩溃:

currentUser

这是Fosco从另一个问题回答的最新尝试。它工作,但与早期版本相同。

currentUser

1 个答案:

答案 0 :(得分:1)

快速浏览一下,看起来它失败了,因为你正试图在迭代时从数组中删除一个对象。我知道这会导致Objective C崩溃,无论你是否使用Parse对象。

尝试重写此细分:

        for (PFUser *friendName in self.friends) {
        if ([friendName.objectId isEqualToString:user.objectId]){ 
            [self.friends removeObject:friendName];
            break; // to exit a loop
        }
    }

对于这样的事情:

    NSMutableArray *tempArray = [[NSMutableArray alloc]init];
    for (PFUser *friendName in self.friends) {
        if (![friendName.objectId isEqualToString:user.objectId]) {
        [tempArray addObject:friendName];
    }
    self.friends = [NSArray arrayWithArray:tempArray];

同样,只有快速浏览所以不是100%,如果这是你的问题,但它看起来像它,让我知道它是否有帮助