我很难让Facebook登录回到我的应用程序中的正确视图并调用相应的Facebook功能。
在Facebook的例子中,Facebook只是[ controller facebook],这是他们开始的视图。我正在使用tabbar应用程序,所以我没有必要的参考。我做了一个指向所需视图的指针并使用它...它正确打开但不会调用任何与facebook相关的方法,具体来说:
(void)fbDidLogin;
(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[*NotReferencedViewController* facebook] handleOpenURL:url];
}
还有其他人遇到过这个吗?
答案 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];
}