3

我目前正在使用 FB SDK 3.5 编写一个 IOS 应用程序。

我创建了一个可以使用以下代码创建“用户拥有的对象”的应用程序:

    NSMutableDictionary<FBOpenGraphObject> *object = [FBGraphObject openGraphObjectForPost];
    object.provisionedForPost = YES;        
    object[@"type"] = @"fbltest:Highscore";
    object[@"title"] = @"New high score";
    object[@"privacy"] = @"EVERYONE";
    object[@"data"][@"leaderboard"] = @"0";
    object[@"data"][@"score"] = @"266";

    [FBRequestConnection startForPostOpenGraphObject:object
                                   completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
     {
        // DO STUFF HERE
     }];

我在对象调试器中测试了对象,一切似乎都井井有条。我还可以使用以下代码检索用户对象列表:

    FBRequestConnection* connection = [[FBRequestConnection alloc] init];
        FBRequest* request = [[FBRequest alloc] initWithSession:FBSession.activeSession graphPath:@"me/objects/fbltest:highscore"];

        [connection addRequest:request
             completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
            {
                // DO STUFF HERE
             }];
    [connection start];

现在我想做的是检索用户朋友对象列表,最初我获得了朋友列表,然后使用以下路径检索对象列表:“/objects/fbltest:highscore”。这什么也没返回。

然后,我尝试使用以下开放图路径查询 Facebook 开放图,但未成功:“me/friends/fbltest:highscore”“me/friends/objects/fbltest:highscore”“me/friends?limit=10&objects/fbltest:highscore”

一些注意事项:对于测试环境,我使用了 3 个测试用户,他们都是彼此的朋友。我已禁用 facebook APP 的“沙盒环境”参数。

任何帮助将不胜感激,即使它只是确认可以读取朋友自托管对象。

4

1 回答 1

2

我一直在尝试做同样的事情(查询朋友的用户拥有的对象),但只是间接地管理它。我本来希望也/<userid>/objects/myapp:score能工作,但我没有得到任何数据。

不过,有效的是查询您朋友的自定义操作,而不是对象。例如: /<userid>/myapp:actiontype

从动作中,您可以获得关联的对象;ids,然后您可以简单地查询为/<objectid>.

这似乎是一种迂回的做事方式,因为这意味着您需要为您创建的每个乐谱对象创建一个关联的操作,即使您只是使用该对象进行数据存储。如果您不希望它进入用户的时间线,您可以设置该no_feed_story属性以隐藏它。那么如果用户明确想要分享一个分数,可能会有一个额外的“正常”动作类型?(我认为只要一个对象可见,对一个对象进行多个操作就可以了)。

og.posts每当您创建用户拥有的对象时,似乎还会创建一个隐式操作,因此您也可以通过它进行查询,但是您必须过滤专门针对您的对象类型的“帖子”。

于 2013-05-06T15:13:53.480 回答