2012-11-10 19 views
0

我正在開發一個應用程序,該應用程序必須向Facebook發佈一些信息。當我打電話Facebook SDK 3.1 for iOS,通過應用切換登錄時從不會調用完成處理程序

[[FBSession activeSession] openWithCompletionHandler:^(FBSession *session, FBSessionState status, NSError *error) { 
      [self publishFacebookStory]; 
     }]; 

[FBSession openActiveSessionWithPublishPermissions:publishPermissions defaultAudience:FBSessionDefaultAudienceEveryone allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { 
     if (!error) { 
      [self publishFacebookStory]; 
     } 
    }]; 

應用程序切換到Safari瀏覽器,我收到一條消息說該應用程序已被授權。我按好了,它切換回我的應用程序,但完成處理程序從來沒有被調用,我仍然沒有一個有效的訪問令牌在這一點上。

任何想法?任何幫助表示讚賞。

謝謝。

回答

1

問題是您的應用程序如何知道如何發佈應用程序委託的調用applicationDidBecomeActive。如果您經歷了Facebook Publish to Feed,它還會將您引回到Facebook login,它會向您顯示applicationDidBecomeActive的適當更改。

底線,您必須將會話的開始與Facebook供稿中的發佈分開(可以通過在向用戶提供張貼到其供稿的選項之前打開會話,或通過跟蹤用戶需要的內容在授權啓動之前發佈,然後使用它在applicationDidBecomeActive上發佈信息)。

+0

完美的伴侶,歡呼聲!我完全錯過了applicationDidBecomeActive部分。謝謝! –

0

你在處理你的appdelegate中的url嗎?

-(BOOL) application:(UIApplication*)application handleOpenURL:(NSURL*)URL { 
    NSString *url = URL.absoluteString; 

    if ([url hasPrefix:@"YOUR_FB_URL_PREFIX"]) { 
     [FBSession.activeSession handleOpenURL:URL]; 
    } 
    ....... 
} 
相關問題