Facebook SDK 3.1 presentShareDialogModally失败

时间:2012-09-26 00:15:58

标签: facebook ios6 facebook-ios-sdk

我正在尝试在iOS 6上测试Facebook的新内置共享“工作表”,但是当我运行示例代码时,它不会显示工作表。相反,它会为我发布一个状态,而不显示它将首先发布的内容。另外我还以为Facebook不允许你在用户嘴里放词?控制台打印此错误:HelloFacebookSample错误:HTTP状态代码: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 个答案:

答案 0 :(得分:10)

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

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

答案 1 :(得分: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  */
}

答案 2 :(得分:2)

确保您没有使用弃用方法打开会话(即.openActiveSessionWithPermissions而不是较新的openActiveSessionWithReadPermissions / openActiveSessionWithWritePermissions)或者facebook sdk将不使用本机facebook集成(即本机对话框)