如何将FBlogin的不同委托分配给iOS中的两个不同的视图控制器

时间:2014-09-23 09:01:29

标签: ios objective-c facebook delegates facebook-ios-sdk

我有两个视图控制器,一个使用FBLoginView及其委托,它们在同一个类中处理。但是,我有另一个viewcontroller使用自定义按钮来启动FBLogin,因此我无法将委托分配给此类。当FBLogin成功时,它将委托第一个视图控制器中的调用。我想单独为第二个视图控制器处理事件。例如:第一个视图控制器是具有FBLogin默认视图的登录,第二个视图控制器是注册,具有自定义按钮并实现FBSession方法,以便它到Facebook应用程序或Safari移动网站。如何在单独的注册页面中实现登录委托方法,以便我可以对此页面进行精美的视图处理?

注册页面按钮操作中的代码为:

// If the session state is any of the two "open" states when the button is clicked
if (FBSession.activeSession.state == FBSessionStateOpen
    || FBSession.activeSession.state == FBSessionStateOpenTokenExtended) {

    // Close the session and remove the access token from the cache
    // The session state handler (in the app delegate) will be called automatically
    [FBSession.activeSession closeAndClearTokenInformation];

    // If the session state is not any of the two "open" states when the button is clicked
} else {
    // Open a session showing the user the login UI
    // You must ALWAYS ask for public_profile permissions when opening a session
    [FBSession openActiveSessionWithReadPermissions:@[@"public_profile",@"email"]
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session, FBSessionState state, NSError *error) {
}

此处allowLoginUI设置为YES,以便重定向到Facebook登录。

对于登录页面,代码为:

self.loginButton.delegate = self;
self.loginButton.readPermissions = @[@"public_profile", @"email"];

因此,即使我从注册中调用按钮操作

,也会在登录页面中调用这些代理
-(void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user{
}

0 个答案:

没有答案