Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.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
Ios 像在本机应用程序中一样从facebook注销_Ios_Facebook_Ios6 - Fatal编程技术网

Ios 像在本机应用程序中一样从facebook注销

Ios 像在本机应用程序中一样从facebook注销,ios,facebook,ios6,Ios,Facebook,Ios6,我的应用程序支持使用facebook登录,但当我注销并再次登录时,不会要求我提供任何凭据-它会立即使用iOS6中的本机用户名登录。我希望在本机facebook应用程序中使用以下内容: 当点击“不是你”时,facebook会提供新的登录屏幕 我跟着这个 问题似乎就在这里: - (void)openSession { NSArray *permissions=[NSArray arrayWithObjects: @"publish_stream", @"publish_actions",@

我的应用程序支持使用facebook登录,但当我注销并再次登录时,不会要求我提供任何凭据-它会立即使用iOS6中的本机用户名登录。我希望在本机facebook应用程序中使用以下内容:

当点击“不是你”时,facebook会提供新的登录屏幕

我跟着这个

问题似乎就在这里:

- (void)openSession
{
    NSArray *permissions=[NSArray arrayWithObjects: @"publish_stream", @"publish_actions",@"create_event", nil];
   // [FBSession open]

    [FBSession openActiveSessionWithPublishPermissions:permissions
                                       defaultAudience:FBSessionDefaultAudienceEveryone
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {

         [self sessionStateChanged:session state:state error:error];
     }];
}


- (void)sessionStateChanged:(FBSession *)session
                      state:(FBSessionState) state
                      error:(NSError *)error
{
    switch (state) {
        case FBSessionStateOpen: {
            NSLog(@"Sesstion opened");
            UIViewController *topViewController =
            [self.navController topViewController];
            NSLog(@"Class: %@", [[topViewController presentedViewController] class]);
            if ([[topViewController presentedViewController]
                 isKindOfClass:[LoginViewController class]])
            {
                [topViewController dismissViewControllerAnimated:YES completion:nil];
            }

                ViewController *basic=(ViewController*)topViewController;
                NSLog(@"Populating details");
                [basic populateUserDetails];



        }
            break;
        case FBSessionStateClosed:
        {
            NSLog(@"Session closed");
            [FBSession.activeSession closeAndClearTokenInformation];

        }

        case FBSessionStateClosedLoginFailed:

            NSLog(@"Login failed");
            [self.navController popToRootViewControllerAnimated:NO];

            [FBSession.activeSession closeAndClearTokenInformation];

            [self showLoginView];
            break;
        default:
            break;
    }

    if (error) {
        UIAlertView *alertView = [[UIAlertView alloc]
                                  initWithTitle:@"Error"
                                  message:error.localizedDescription
                                  delegate:nil
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil];
        [alertView show];
    }
}

我不确定Facebook SDK是否支持这一点——尽管我可能错了。这个想法(据我所知)是Facebook登录允许当前登录Facebook的用户登录到你的应用程序。如果没有人登录Facebook,将显示凭据页面。提供有效凭据后,用户将登录到Facebook,并向您的应用程序发送一个身份验证令牌

关键是,您不能对当前登录到Facebook的用户进行身份验证。这首先需要注销当前用户,我认为Facebook希望将此“更改用户”功能保留到Facebook应用程序中

另外,请注意,当用户从你的应用程序注销时,他会一直登录到Facebook。这与适用于使用Facebook身份验证的网站的策略不同。在这种情况下,用户应该同时从网站和Facebook注销