2

我正在尝试从我的 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字典而不是completionGesture. NSError对象始终是nil

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

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

我的代码有问题吗?

4

2 回答 2

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 开发者参考。让我知道它是否有帮助。谢谢

于 2013-08-14T18:51:01.653 回答
2

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

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

于 2013-08-16T16:43:38.920 回答