iOS:在所选FB好友的墙上张贴

时间:2013-10-21 16:01:56

标签: objective-c facebook facebook-graph-api fbdialogs

情景: 我想将帖子分享给只有选定朋友的帖子。

遵循先决条件: 在FB好友列表中,只选择必要的好友并创建一个数组

已尝试的步骤:

试用1: 使用FBWebDialogs并调用方法+ (void)presentFeedDialogModallyWithSession:(FBSession *)session parameters:(NSDictionary *)parameters handler:(FBWebDialogHandler)handler;

在Parameters字典中,设置“to”的值。

当收件人只有一个时,工作完全正常。如果收件人不止一个,则无法共享。

试用2: 使用FBDialogs并致电+ (FBAppCall *)presentShareDialogWithParams:(FBShareDialogParams *)params clientState:(NSDictionary *)clientState handler:(FBDialogAppCallCompletionHandler)handler;

FBShareDialogParams中,设置好友数组。 工作良好。但仅在安装Facebook App时才有效。否则不起作用。

...

有些人可以帮我解决这个问题:

  1. 分享多个朋友的墙。
  2. 无论是否有效 Facebook App正在手机上安装。
  3. 由于

1 个答案:

答案 0 :(得分:2)

您必须执行以下操作:

FBShareDialogParams *p = [[FBShareDialogParams alloc] init];
p.friends = friendIdsArray;`
p.link = url;

//check if the FB app is installed and can use this method
if ([FBDialogs canPresentShareDialogWithParams:p]) {
    [FBDialogs presentShareDialogWithParams:p 
                                clientState:nil 
                                    handler:^(FBAppCall *call,
                                        NSDictionary *results,
                                               NSError *error) {
            //do some error checking
}
// fallback to what is essentially a webview
else {
    // string of comma separated Facebook Ids
    NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:@"1234,5678", @"to", nil];
    NSString *message = @"I love Objective-C";
    [FBWebDialogs presentRequestsDialogModallyWithSession:[FBSession activeSession]
                                                  message:message 
                                                    title:nil 
                                               parameters:params
                                                  handler:^(FBWebDialogResult result,
                                                                    NSURL *resultURL, NSError *error) {
              // do some error checking 
    } 

这就是我使用的,我发现的唯一问题是,在发出请求时,您可以包含的Facebook ID数量似乎有一些未知的限制。它有所不同,取决于我无法记录的因素。我认为FB正试图阻止人们滥用/发送垃圾邮件,这是有充分理由的......