presentShareDialogWithParams发布到FB墙,但回调处理程序结果说错误

时间:2013-11-28 07:10:26

标签: ios objective-c facebook facebook-ios-sdk

我有一个带有Facebook SDK的iOS应用程序。我正在https://developers.facebook.com/docs/ios/ios-sdk-games/feed/使用第一个示例代码块,几乎逐字地将我的应用程序中的信息共享给FB。我只更改了示例代码中的字符串和网址以适合我的应用。

虽然我的应用中的帖子确实出现在我的Facebook墙上,而且一切看起来都不错,但我的NSLog的FBAppCall结果却在说,

  

错误发布故事=错误Domain = com.facebook.sdk Code = 11“The   用户在完成此操作之前导航离开Facebook应用程序   AppCall。此AppCall现已取消,需要重试才能获得   顺利完成

我正在尝试使用FBAppCall结果,以便在成功发送后,我可以触发另一个网络调用到我的后端,在那里我可以记录有关该事件的数据。奇怪的是,虽然我可以看到我墙上的帖子,但是“已发布的故事”的最终else条件没有发生,error条件是。

这是来自https://developers.facebook.com/docs/ios/ios-sdk-games/feed/

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

最后一点:我不相信它可能是原因,但我的FB应用目前处于“沙盒”模式。

更新:我发现了类似的帖子FBDialogs presentShareDialogWithParams succeeds but error gets returned,其推荐的解决方案是禁用“安装见解”&应用控制台中的“移动SDK洞察”。不幸的是,这并没有解决我的问题。

感谢。

2 个答案:

答案 0 :(得分:0)

我不确定Error Domain=com.facebook.sdk Code=11但您必须在Facebook上检查您的应用设置,并且某些迁移会禁用最后三个选项(2012年7月,2012年8月重大更改)。

:)

答案 1 :(得分:0)

当您遇到此错误时,您需要处理来自应用代理的响应。

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation
{
    return [FBAppCall handleOpenURL:url
                  sourceApplication:sourceApplication
                    fallbackHandler:^(FBAppCall *call) {
                        if (call.appLinkData && call.appLinkData.targetURL) {
                            // Invoke pending callback. 
                        }
                    }];
}

当用户完成操作时,该调用将包含帖子中的所有信息:

<FBAppCall: 0x147274f0, ID: 62FA2382-B557-45D5-8ACA-FE4C7516F861
 dialogData: <FBDialogsData: 0x14727490, method: share
 arguments: {
    dataFailuresFatal = 0;
    description = "After years of captivity, Angry Goat is finally free!";
    link = "http://appstore.com/berrycrush";
    name = "Unlocked Angry Goat";
    picture = "http://example.com/angry-goat.png";
}
 results: {
    completionGesture = post;
    didComplete = 1;
}>
>