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

Posted

技术标签:

【中文标题】presentShareDialogWithParams 发布到 FB 墙上,但回调处理程序结果显示错误【英文标题】:presentShareDialogWithParams posts to FB wall, but callback handler results say error 【发布时间】:2013-11-28 07:10:25 【问题描述】:

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

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

错误发布故事=错误域=com.facebook.sdk 代码=11“ 用户在完成此操作之前离开 Facebook 应用程序 应用呼叫。现在这个 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,建议解决方法是在应用控制台中禁用“Install Insights”和“Mobile SDK Insights”。不幸的是,这并没有解决我的问题。

谢谢。

【问题讨论】:

【参考方案1】:

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

:)

【讨论】:

【参考方案2】:

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

- (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;
>
>

【讨论】:

以上是关于presentShareDialogWithParams 发布到 FB 墙上,但回调处理程序结果显示错误的主要内容,如果未能解决你的问题,请参考以下文章