我似乎无法使用适用于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'
任何人都知道如何格式化这些参数?我找不到任何文档或明确的例子。提前谢谢。
作为附注,有没有人知道如何从应用发布并标记人而不是地点?我觉得每种方法都意味着你必须先至少标记一个地方。
谢谢!
答案 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
}];