Facebook iOS - handleOpenURL& Tabbar应用程序

时间:2011-05-13 22:29:20

标签: iphone ios facebook

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

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

(void)fbDidLogin;

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

还有其他人遇到过这个吗?

1 个答案:

答案 0 :(得分:2)

不确定您正在谈论的是什么示例,但您应该在您的模型或UIApplicationDelegate等中心位置创建和存储您的Facebook对象。然后它可以通过单身人士访问,因此您始终可以访问它,例如:

[[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的示例完全一样(假设您没有处理其他网址方案):

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {

    return [facebook handleOpenURL:url]; 
}

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