2013-04-26 80 views
3

我使用此代碼呈現共享對話框:的Facebook的iOS SDK 3.5模態對話框飼料載荷iPhone

if (![[FBSession activeSession] isOpen]) {[self login]; return;} 

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
             @"name", @"name", 
             @"caption", @"caption", 
             @"description", @"description", 
             @"http://cnn.com", @"link", 
             @"http://cnn.com/.png", @"picture", 
             nil]; 

    [FBWebDialogs presentFeedDialogModallyWithSession:nil 
              parameters:params 
               handler: 
    ^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { 
     if (error) { 
      NSLog(@"Error publishing story."); 
     } else { 
      if (result == FBWebDialogResultDialogNotCompleted) { 
       NSLog(@"User canceled story publishing (clicked the 'x' icon)"); 
      } else { 
       // Handle the publish feed callback 
       NSLog(@"Handle the publish feed callback"); 
      } 
     } 
    }]; 

我已經(根據SDK文檔需要)加入適當的條目到的Info.plist:

enter image description here

和AppDelegate的方法處理Facebook的重定向,以及:

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation { 
    // attempt to extract a token from the url 
    return [FBAppCall handleOpenURL:url 
        sourceApplication:sourceApplication 
        fallbackHandler:^(FBAppCall *call) { 
         NSLog(@"In fallback handler"); 
        }]; 
} 

-(void)applicationWillTerminate:(UIApplication *)application{ 

    [FBSession.activeSession close]; 

} 

通過Facebook的iOS版SDK 3.5.1要求我還添加了框架:

enter image description here

它給空對話框(兩個 - 真實設備和仿真器)與負載指示燈紡永遠:

enter image description here

日誌中沒有顯示錯誤等,我可以很容易地解僱它(使用正確的處理程序日誌)。

我asume FBSession啓動並正確打開(我可以通過重定向到Safari瀏覽器成功授權並回到應用程序 - 這讓我覺得重定向工作正常)。

這是爲什麼發生?我錯過了什麼?順便說一句:爲什麼沒有錯誤日誌?

這是如此令人沮喪,因爲我之前已經但是在這個程序,我想嘗試它做廣告作爲最新的SDK實現facebook集成很多次:「要容易,因爲以前從未」。

+0

您是否已將FacebookDisplayName參數添加到您的plist文件中? 請查看此處的升級文檔:https://developers.facebook.com/docs/tutorial/iossdk/upgrading-from-3.2-to-3.5/ 另外,您可以將您的代碼與我們的任何樣本進行比較嗎?一樣的東西。有幾個樣本是SDK的一部分,然後您可以在這裏查看單獨的操作方法(https://github.com/fbsamples)。 – 2013-04-26 20:38:01

+0

是的。我已將FacebookDisplayName以及FacebookAppID添加到info.plist。我使用基於iOS SDK示例的代碼片段。 – Lukasz 2013-04-26 20:50:59

+0

我明白了。如果您有有效的會話,它會重現嗎?另外,如果你傳遞了一個零會話,你必須在web視圖上進行身份驗證,對嗎?在webview登錄後,你會看到這個空白的屏幕? – 2013-04-29 22:31:16

回答

0

嘗試ShareKit,並按照從這裏安裝說明:http://getsharekit.com/install/

通常開箱的。

+0

這可能不是直接的解決方案,但是在經歷了這個問題的過度掙扎之後,我決定(在絕望中)遵循你的建議。它像一個魅力,我得到了免費的推特和其他共享選項。 – Lukasz 2013-05-03 11:13:24

0

您是否嘗試過的activeSession作爲參數設置爲原料對話?:

//... 
[FBWebDialogs presentFeedDialogModallyWithSession:[FBSession activeSession] 
             parameters:params 
              handler: 
^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { 
//... 
+0

是的,我在嘗試解決此問題時嘗試過。 – Lukasz 2013-05-02 13:16:08

0

好,然後檢查是否有權限發佈如果沒有,問他們:

if([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound){ 
    [FBSession.activeSession requestNewPublishPermissions:[NSArray arrayWithObject:@"publish_actions"] 
             defaultAudience:FBSessionDefaultAudienceEveryone 
             completionHandler: 
             ^(FBSession *session, NSError *error) { 

             if (!error) { 
              //Here call your method to publish again so you have granted the active session has publish permissions. 
             } 
      }]; 

我還沒有完成網絡提要對話框,所以讓我知道它是否適合你。

0

我遇到了同樣的問題。但最終這個錯誤是由params字典中的@「圖片」鍵造成的。所以我的建議是,以取代你從Facebook的例子

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            @"Sharing Tutorial", @"name", 
            @"Build great social apps and get more installs.", @"caption", 
            @"Allow your users to share stories on Facebook from your app using the iOS SDK.", @"description", 
            @"https://developers.facebook.com/docs/ios/share/", @"link", 
            @"http://i.imgur.com/g3Qc1HN.png", @"picture", 
            nil]; 

然後一步弄清楚它從你的字典鍵導致黑屏步PARAMS有什麼意思。

0

在這裏,我遇到了同樣的問題。我的解決方案是:

1。從- (void)applicationWillTerminate:(UIApplication *) application上的info.plist與FB ID一起的AppDelegate刪除[FBAppEvents activateApp]; [FBAppCall handleDidBecomeActive];- (void)applicationDidBecomeActive:(UIApplication *)application[FBSession.activeSession close];以及

2.戴上顯示名稱。

3.刪除舊的框架,然後添加新的框架v3.15.1(最新)。請記住將副本項目標記爲目標組的文件夾並添加目標