我的应用程序显示了一个带有按钮的模态 UIView,以允许用户通过 Facebook 进行身份验证。在用户切换到 Facebook 应用程序,通过身份验证,然后被发送回我的应用程序后,我希望这个模式视图自动关闭。
如何告诉用户已成功通过身份验证,然后关闭控制器?
我猜我应该对通知中心做点什么,但我不确定是什么。
在你appDelegate
这样做:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[yourViewController facebook] handleOpenURL:url];
}
在应用程序委托的这种方法中使用通知中心后,我终于得到了这个。当我们得到一个有效的会话时,它会向模态视图发送一个通知,告诉它关闭。
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
if (!error) {
// We have a valid session
NSLog(@"User session found");
NSDictionary *extraInfo = [NSDictionary dictionaryWithObject:@"FBLoginStatus" forKey:@"FBLogin"];
NSNotification *note = [NSNotification notificationWithName:@"FBLoginNote" object:self userInfo:extraInfo];
[[NSNotificationCenter defaultCenter] postNotification:note];
}
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
}
假设您的意思是您正在呈现一个模态UIViewController
,它可以通过以下方式被解雇。
[self dismissViewControllerAnimated:YES completion:nil];
假设您使用的是最后一个 Facebook SDK,您需要做的就是在操作成功完成后实现解除。这是通过将代码放在“-(void)fbDidLogin
委托方法中来完成的。