0

我正在开发一个必须向 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,我收到一条消息说该应用程序已被授权。我按下确定,它切换回我的应用程序,但从未调用完成处理程序,此时我仍然没有有效的访问令牌。

有任何想法吗?任何帮助表示赞赏。

谢谢。

4

2 回答 2

1

问题是您的应用程序如何知道如何在您的应用程序委托调用applicationDidBecomeActive. 如果您通过Facebook Publish to Feed,它还会将您引回Facebook 登录,该登录会显示您对applicationDidBecomeActive.

最重要的是,您必须将会话的打开与 Facebook 提要上的发布分离(通过在您向用户提供发布到他们的提要的选项之前打开会话,或者通过跟踪用户想要在发布之前发布的内容)授权被启动,然后使用它来发布信息applicationDidBecomeActive)。

于 2012-11-10T19:56:13.247 回答
0

您是否正在处理您的 appdelegate 中的网址?

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

    if ([url hasPrefix:@"YOUR_FB_URL_PREFIX"]) {
        [FBSession.activeSession handleOpenURL:URL];
    }
    .......
}
于 2012-11-10T20:06:55.217 回答