3

场景:我想将帖子分享到仅选定朋友的墙上。

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

尝试的步骤:

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

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

当收件人只有一个时,效果很好。如果收件人不止一个,则无法共享。

试用二:使用FBDialogs和调用+ (FBAppCall *)presentShareDialogWithParams:(FBShareDialogParams *)params clientState:(NSDictionary *)clientState handler:(FBDialogAppCallCompletionHandler)handler;

在 中FBShareDialogParams,设置好友数组。工作正常。但仅在安装 Facebook 应用程序时有效。否则不起作用。

...

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

  1. 在多个朋友的墙上分享。
  2. 无论是否在手机上安装了 Facebook 应用,都应该可以使用。

谢谢

4

1 回答 1

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 正试图阻止人们滥用/发送垃圾邮件,这是有充分理由的......

于 2013-11-27T01:50:35.420 回答