如何在startWithGraphPath Facebook iOS中标记朋友

时间:2013-09-26 23:51:17

标签: ios objective-c facebook facebook-graph-api facebook-ios-sdk

我似乎无法使用适用于iOS的Facebook SDK来发布我的帖子。我正在使用“startWithGraphPath:parameters:HTTPMethod:completionHandler:”函数。我可以得到消息,地点和图片工作,但我似乎无法标记朋友。我已经尝试将NSDictionary键和对象设置为

parameters[@"tags"] = self.friendsIDs; 

这是一串逗号分隔的Facebook用户ID(根据Facebook参考页面:https://developers.facebook.com/docs/reference/api/user/#posts)。然而,这总是出现:

com.facebook.sdk:ParsedJSONResponseKey={
    body =     {
        error =         {
            code = 100;
            message = "(#100) param tags must be an array.";
            type = OAuthException;

然后我把它们放在一个数组中它仍然无法正常工作。事实上,我得到了一个不同的错误:

-[__NSArrayM length]: unrecognized selector sent to instance 0x1228abc0 2013-09-26 16:47:36.917 DrinkingGamePicker[27558:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayM length]: unrecognized selector sent to instance 0x1228abc0发送到实例0x1228abc0'

任何人都知道如何格式化这些参数?我找不到任何文档或明确的例子。提前谢谢。

作为附注,有没有人知道如何从应用发布并标记人而不是地点?我觉得每种方法都意味着你必须先至少标记一个地方。

谢谢!

1 个答案:

答案 0 :(得分:2)

根据我的经验,您无法同时使用帖子标记朋友。但是,您可以在帖子成功后标记朋友。发布后,您应该从completionHandler块获取post id。这是我现在正在使用的代码。

NSString *postId = //result from posting completionHandler;
NSString *path = [NSString stringWithFormat:@"%@/tags",postId];
NSMutableArray *tags = [NSMutableArray array];
for (NSString *friendId in self.tagFriends) {
    [tags addObject:[NSDictionary dictionaryWithObject:friendId forKey:@"tag_uid"]];
}

NSMutableDictionary *param = [NSMutableDictionary dictionary];
[param setObject:JSONStringWithObject(tags) forKey:@"tags"]; 
//JSONStringWithObject() is just a function develop by myself using NSJSONSerialization to wrap NSArray into JSON format NSString

[FBRequestConnection startWithGraphPath:path parameters:param HTTPMethod:@"POST"     completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
    //check error here 
}];