Facebook SDK 3.1 presentShareDialogModally 失败。

5
我正在尝试在iOS 6上测试Facebook的新内置共享“表单”,但当我运行示例代码时,它不会显示该表单。相反,它会先为我发布状态,而不显示将要发布的内容。此外,我认为Facebook不再允许你替用户说话?控制台打印以下错误:HelloFacebookSample Error: HTTP status code: 400。
我使用XCode 4.5和iOS模拟器6.0以及Facebook SDK 3.1。
我遵循这个链接: http://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/3.1/
3个回答

10

您是否在设备/模拟器上设置了Facebook帐户(在“设置”->“Facebook”下)?

仅当应用程序在iOS 6上运行且用户通过iOS 6 Facebook帐户进行身份验证时,才会显示本地表单对话框。否则,处理程序将报告该错误,并且presentShareDialogModallyFrom返回“NO”。另外,处理程序中的FBNativeDialogResult result将等于FBNativeDialogResultError


就是这样,谢谢!现在看起来很明显,但教程没有列出它作为一个步骤,示例也没有处理那种情况。每个用户都必须进入他们的设置吗?还是如果他们同意,我可以让我的应用程序更改设置? - Curtis
如果用户没有配置Facebook,例如共享iPad的家庭,是否有与以前的Facebook对话框:“stream.publish”和参数:andDelegate等效的替代方法? - Nico AD

2

您缺少一些必需的框架:

AdSupport.framework

Account.framework

Social.framework


注:该文本已经是中文,无需翻译。
BOOL displayedNativeDialog =
[FBNativeDialogs
 presentShareDialogModallyFrom:self
 initialText:self.shareText
 image:nil
 url:nil
 handler:^(FBNativeDialogResult result, NSError *error) {
     if (error) {
         /* handle failure */
         NSLog(@"error:%@, %@", error, [error localizedDescription]);
     } else {
         if (result == FBNativeDialogResultSucceeded) {
             /* handle success */
             NSLog(@"handle success");
         } else {
             /* handle user cancel */
             NSLog(@"user cancel");
         }
     }
 }];
if (!displayedNativeDialog) {
    /* handle fallback to native dialog  */
}

请确保您的设备/模拟器为iOS 6.0。 - docchang
这是我得到的:HelloFacebookSample[2470:19a03] 错误:Error Domain=com.facebook.sdk Code=7 "无法完成操作。(com.facebook.sdk error 7.)" UserInfo=0x94954d0 {com.facebook.sdk:NativeDialogReasonKey=NativeDialogInvalidForSession},无法完成操作。(com.facebook.sdk error 7.) - Curtis
你在 plist 中设置了你的 Facebook 应用 ID 吗?https://developers.facebook.com/docs/payments/errorcodes/ - docchang
它已经在那里了。我所做的就是从developers.facebook.com下载示例代码项目并运行它。 - Curtis

2
确保不要使用已弃用的方法打开会话(例如,使用 openActiveSessionWithPermissions 而不是更新的 openActiveSessionWithReadPermissions / openActiveSessionWithWritePermissions),否则 Facebook SDK 将不会使用本地的 Facebook 集成(例如,原生对话框)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接