Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 通过Facebook身份验证后关闭modal UIView_Iphone_Ios_Facebook - Fatal编程技术网

Iphone 通过Facebook身份验证后关闭modal UIView

Iphone 通过Facebook身份验证后关闭modal UIView,iphone,ios,facebook,Iphone,Ios,Facebook,我的应用程序会弹出一个带有按钮的模式UIView,允许用户通过Facebook进行身份验证。在用户切换到Facebook应用程序,获得身份验证,然后被发送回我的应用程序后,我希望此模式视图自动取消 如何告知用户已成功通过身份验证,然后关闭控制器 我猜我应该对通知中心做些什么,但我不确定是什么 假设您的意思是呈现一个模态的UIViewController,则可以使用以下命令将其取消 [self dismissViewControllerAnimated:YES completion:nil];

我的应用程序会弹出一个带有按钮的模式UIView,允许用户通过Facebook进行身份验证。在用户切换到Facebook应用程序,获得身份验证,然后被发送回我的应用程序后,我希望此模式视图自动取消

如何告知用户已成功通过身份验证,然后关闭控制器


我猜我应该对通知中心做些什么,但我不确定是什么

假设您的意思是呈现一个模态的
UIViewController
,则可以使用以下命令将其取消

[self dismissViewControllerAnimated:YES completion:nil];

假设您使用的是最后一个Facebook SDK,那么您需要做的就是在操作成功完成后执行解雇。这是通过将代码放置在“
-(void)fbdilogin
委托方法中完成的。

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;
    }
}

哦,我知道如何关闭窗口。我想问的是如何让应用程序明白它现在已经通过Facebook的身份验证,这样它就可以关闭窗口。@b穆勒如果你不发布你正在使用的代码,我很难说,但我想你会想在你的代码中寻找完成处理程序来接收登录身份验证。嗯,是的使用最新的SDK,我尝试了
-(void)fbdilogin{NSLog(@“FB loggin”);}
但我的日志中没有显示任何内容。在使用Facebook iOS SDK时,连接所有内容有时会很棘手。请确保您已经完成了所有步骤,包括项目info.plist中所需的appDelegate方法和URL方案配置。这如何使模式视图被忽略?我发布了此答案,因为您需要当您在
-(void)fbdilogin
中执行NSLog时,没有显示任何内容。最好使用委托方法,而不是通知。