2013-09-30 1 views
-1

Я внедрил вход в систему Facebook, и он работает правильно. Но у меня есть проблемы с этим экраном:как определить, нажата ли кнопка отмены во время входа в facebook.

enter image description here

это предоставляется непосредственно в Facebook рамках, поэтому я не могу напрямую подключить по нему. Этот вид используется, чтобы связать мое приложение Facebook с моей учетной записью Facebook. Так что вопрос: как я могу определить, нажал ли пользователь кнопку отмены? я пытался напечатать состояние моей Facebook сессии

- (void)sessionStateChanged:(FBSession *)session 
         state:(FBSessionState) state 
         error:(NSError *)error 
{ 
    NSLog(@"stato %u",state); 

    switch (state) { 
     case FBSessionStateOpen: 

      break; 
     case FBSessionStateClosed: 
      break; 
     case FBSessionStateCreated: 
      break; 
     case FBSessionStateCreatedOpening: 
      break; 
     case FBSessionStateOpenTokenExtended: 
      break; 
     case FBSessionStateCreatedTokenLoaded: 
      break; 
     case FBSessionStateClosedLoginFailed: 
      // Once the user has logged in, we want them to 
      // be looking at the root view. 

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

но всегда возвращает то же самое состояние, независимо от нажатой кнопки.

СООБЩЕНИЕ

ответ

0

Какое состояние всегда возвращается? Это говорит о том, что что-то еще не настроено правильно?

Вы должны иметь возможность добавить что-то подобное вашему представлениюWillAppear/viewDidAppear.

// See if the app has a valid token for the current state. 
if (FBSession.activeSession.state == FBSessionStateCreatedTokenLoaded) { 
    // To-do, show logged in view 
} else { 
    // No, display the login page. 
    [self showLoginView]; 
} 
+0

методом «FBSession.activeSession. state == FBSessionStateCreatedTokenLoaded 'всегда возвращает NO! даже если я нажму кнопку ОК или кнопку отмены! результат всегда нет! –

+0

Когда я печатаю состояние, я получаю этот номер: 257, что соответствует FBSessionStateClosedLoginFailed внутри коммутатора, но FBSessionState Open никогда не вызывает. –

+0

Если вы всегда получаете FBSessionStateClosedLoginFailed, тогда должна быть другая проблема. Как вы открываете государство? https://developers.facebook.com/docs/ios/ios-sdk-tutorial/authenticate/ – StuartM

1

Я решил, добавив эту строку кода в AppDelegate:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url 
{ 
    return [FBSession.activeSession handleOpenURL:url]; ; 
} 

и путем проверки состояния связи с:

if (!FBSession.activeSession.isOpen) { 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^