使用FBDialogs检测成功的facebook帖子

时间:2013-08-14 17:42:34

标签: ios facebook

我正试图从我的iOS应用程序中显示facebook分享对话框。

此代码打开Facebook应用程序并显示对话框:

FBShareDialogParams* params = [[FBShareDialogParams alloc] init];
params.link = urlToShare;
params.name = @"Test";
params.description = @"Description";
params.picture = [NSURL URLWithString:FB_IMG_URL];

BOOL canPresentShareDialog = [FBDialogs canPresentShareDialogWithParams:params];
if (canPresentShareDialog) {
    [FBDialogs presentShareDialogWithParams:params clientState:nil handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
        if (error) {
            if ([FBErrorUtility shouldNotifyUserForError:error]) {
                UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Facebook-Error!" message:[FBErrorUtility userMessageForError:error] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
                [alert show];
            }
        } else {
            NSLog(@"SUCCESS");
        }
    }];
}

在完成处理程序中,我想知道用户是否取消了操作。结果词典应该告诉我。但是我只在字典中获得didComplete=YES而不是completionGestureNSError对象始终为nil

结果字典在此解释:https://developers.facebook.com/ios/share-dialog/

所以问题是我无法判断帖子是否成功。

我的代码有问题吗?

2 个答案:

答案 0 :(得分:2)

如果我没有错,那么你想知道用户是否由于某些错误或者按下取消按钮而无法在Facebook上发布数据。如果是这种情况,那么使用下面给出的代码

 [FBDialogs presentShareDialogWithParams:shareParams
                              clientState:nil
                                  handler:^(FBAppCall *call, NSDictionary *results, NSError *error) {
           if(error) {
              NSLog(@"Error publishing story.");
           } else if (results[@"completionGesture"] && [results[@"completionGesture"] isEqualToString:@"cancel"]) {
              NSLog(@"User canceled story publishing.");
           } else {
              NSLog(@"Story published.");
           }
          }];

取自Facebook Developer Reference。如果有帮助,请告诉我。感谢

答案 1 :(得分:2)

如文档中所述,“completionGesture”字段“仅在用户登录您的应用时才可用”。

因此,如果用户以前从未在您的应用中使用Facebook登录,则您将无法获得该字段,并且只会看到“didComplete”字段。