Facebook SDK 3.1用于iOS,通过应用程序切换登录时从未拨打完整处理程序



我正在开发一个必须向Facebook发布一些信息的应用程序。当我打电话

[[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,我收到一条消息,说该应用已经已获授权。我按还可以,然后切换回我的应用程序,但是完成处理程序从未被调用,此时我仍然没有有效的访问令牌。

有什么想法吗?任何帮助都将不胜感激。

谢谢。

问题是您的应用如何在应用程序委托对applicationDidBecomeActive的调用上发布。如果您浏览Facebook发布以供稿,它也会将您引用回到Facebook登录名,该登录向您显示applicationDidBecomeActive的适当更改。

底线,您必须在Facebook feed上的发布将会话开放(通过在向用户介绍给他们的提要之前打开会话,或者通过跟踪用户想要的内容,请在启动授权之前发帖,然后使用该发布将信息发布在applicationDidBecomeActive上)。

您是否在AppDelegate中处理URL?

-(BOOL) application:(UIApplication*)application handleOpenURL:(NSURL*)URL {
    NSString *url = URL.absoluteString;
    if ([url hasPrefix:@"YOUR_FB_URL_PREFIX"]) {
        [FBSession.activeSession handleOpenURL:URL];
    }
    .......
}

最新更新