Facebook SDK 3.1对于iOS,在通过应用程序切换登录时从不调用完成处理程序

Facebook SDK 3.1对于iOS,在通过应用程序切换登录时从不调用完成处理程序,ios,facebook,Ios,Facebook,我正在开发一个应用程序,它必须在facebook上发布一些信息。当我打电话时 [[FBSession activeSession] openWithCompletionHandler:^(FBSession *session, FBSessionState status, NSError *error) { [self publishFacebookStory]; }]; 或 该应用程序切换到safari,我收到一条消息说该应用程序已被授权。我按下OK,

我正在开发一个应用程序,它必须在facebook上发布一些信息。当我打电话时

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

该应用程序切换到safari,我收到一条消息说该应用程序已被授权。我按下OK,它会切换回我的应用程序,但从未调用完成处理程序,此时我仍然没有有效的访问令牌

有什么想法吗?感谢您的帮助


谢谢。

问题在于你的应用程序如何知道如何在你的应用程序代理调用
applicationIDbecomeactive
时发布。如果您浏览,它还将引导您返回,其中显示了对
applicationIDBecomeActive
的相应更改


一句话,你必须将会话的开始和Facebook提要上的发布分离开来(在向用户展示发布到其提要的选项之前打开会话,或者在启动授权之前跟踪用户想要发布的内容,然后使用该内容在
ApplicationIDBecomeActive
上发布信息)。

您是否在处理appdelegate中的url

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

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

完美的朋友,干杯!我完全错过了申请的环保部分。谢谢!
-(BOOL) application:(UIApplication*)application handleOpenURL:(NSURL*)URL {
    NSString *url = URL.absoluteString;

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