我正在开发一个必须向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];
}
.......
}