2012-11-10 26 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]; 
    } 
    ....... 
} 
相关问题