我有两个视图控制器,一个使用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{
}