2012-09-26 83 views
4

我想測試iOS 6上Facebook的新內置共享「工作表」,但是當我運行示例代碼時,它不顯示工作表。相反,它會爲我發佈狀態,而不會顯示首先發布的內容。我還以爲Facebook不允許你把話放在用戶的嘴裏呢?控制檯打印此錯誤:HelloFacebookSample錯誤:HTTP狀態代碼:400Facebook的SDK 3.1 presentShareDialogModally失敗

我的XCode 4.5和iOS 6.0模擬器和Facebook SDK 3.1

我跟隨這名: http://developers.facebook.com/docs/getting-started/facebook-sdk-for-ios/3.1/

回答

10

你設置的設備/模擬器的Facebook帳戶(在設置 - > Facebook的)?

只有當應用程序在ios 6上運行並且用戶通過ios 6 Facebook帳戶進行身份驗證時纔會顯示本機表格對話框。否則,處理程序會報告該錯誤,並且presentShareDialogModallyFrom返回「否」。此外,處理程序中的FBNativeDialogResult result將等於FBNativeDialogResultError

+0

這就是它的感謝!似乎現在看起來很明顯,但教程並未將其列爲一個步驟,並且該示例沒有處理該案例。每個用戶都必須進入他們的設置,或者如果他們批准,我可以讓我的應用更改設置嗎? – Curtis

+0

AAWESOME它的工作...非常感謝很多 –

+0

如果用戶還沒有配置像這樣的Facebook,例如一個共享iPad的家庭?有沒有一個替代方法相當於以前的facebook對話框:@「stream.publish」andParams:andDelegate –

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 */ 
} 
+0

我增加了框架,我仍然遇到同樣的問題。 – Curtis

+0

請確保你的設備/模擬器是iOS 6.0 – docchang

+0

下面是我得到的:HelloFacebookSample [2470:19a03]錯誤:錯誤域= com.facebook.sdk代碼= 7「操作無法完成(com.facebook.sdk錯誤7)「UserInfo = 0x94954d0 {com.facebook.sdk:NativeDialogReasonKey = NativeDialogInvalidForSession},操作無法完成。 (com.facebook.sdk錯誤7.) – Curtis

2

確保你沒有使用過時的方法(ie.openActiveSessionWithPermissions而不是較新的openActiveSessionWithReadPermissions/openActiveSessionWithWritePermissions)或Facebook的SDK將無法使用原生facebook集成開幕式上(即本地對話框)