Facebook iOS – handleOpenURL和Tabbar应用程序

我很难让Facebook登录回到我的应用程序中的正确视图并调用相应的Facebookfunction。

在这个例子中,Facebook只有[ 控制器 Facebook],这是他们开始的视图。 我正在使用tabbar应用程序,所以我没有必要的参考。 我做了一个指向所需视图的指针并使用它…它正确打开但不会调用任何与facebook相关的方法,具体来说:

(void)fbDidLogin; (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [[*NotReferencedViewController* facebook] handleOpenURL:url]; } 

有没有其他人遇到这个?

不确定你在谈论什么样的例子,但是你应该在一个中心位置创建和存储你的Facebook对象,比如你的Model或UIApplicationDelegate 。 然后它可以通过单例访问,因此您始终可以访问它,例如:

 [[UIApplication sharedApplication] delegate].facebook 

因此,您可以从任何视图控制器需要它访问facebook对象。

当你做的事情

 NSArray* permissions = [[NSArray arrayWithObjects:@"email", @"read_stream", @"publish_stream", nil] retain]; [facebook authorize:permissions delegate:self]; 

指定delegate:self意味着您将在该类中实现Facebook可以调用以通知您某些事件的方法。 其中一种方法是fbDidLogin ,在那里你可以做任何你需要的事情:

 -(void)authorizeFacebook { NSArray* permissions = [NSArray arrayWithObjects:@"email", @"read_stream", @"publish_stream", nil]; [facebook authorize:permissions delegate:self]; } // if the authorization succeeds it will come back to your app and call the method below -(void)fbDidLogin { // switch view, call the facebook graph, or do whatever else you like } 

您可以在app委托本身或视图控制器中执行此操作。

您可以通过检查facebook SDK的.h文件来查看facebook委托方法:Facebook.h,FacebookRequest.h等。

编辑

并且你的handleOpenURL:方法应该与fb的例子完全一样(假设你没有处理其他url方案):

 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [facebook handleOpenURL:url]; } 

http://developers.facebook.com/docs/guides/mobile/#ios