2013-08-12 2 views
4

У меня есть приложение с интеграцией facebook, и иногда все работает нормально, но теперь у меня есть почта, которую некоторые люди не могут войти в Facebook.FBSessionStateClosedLoginFailed, когда я вошел в систему через Настройки

Теперь я сейчас в чем проблема.

Если я не вошел в системе через настройку в моем Facebook счет все работает нормально, но когда я вошел через настройку я всегда получаю в sessionStateChanged Funciton случае FBSessionStateClosedLoginFailed:

Что я могу сделать против него?

Вот мой код:

Во-первых, когда я нажимаю на входе в систему с Facebook я использую эту функцию:

- (void)facebookLoginFunction { 
    if ([self checkInternet]==TRUE) { 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sessionStateChanged:) name:FBSessionStateChangedNotification object:nil]; 
     AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate]; 
     // The person using the app has initiated a login, so call the openSession method 
     // and show the login UX if necessary. 
     [appDelegate openSessionWithAllowLoginUI:YES]; 
    } 
} 

и функция sessionStateChanged: в уполномоченной

- (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"); 
      } 
     break; 
     case FBSessionStateClosed: NSLog(@"User session closed"); 
     case FBSessionStateClosedLoginFailed:{ NSLog(@"Login failed"); 
      [FBSession.activeSession closeAndClearTokenInformation];} 
     break; 
    default: 
     break; 
    } 

    [[NSNotificationCenter defaultCenter] postNotificationName:FBSessionStateChangedNotification object:session]; 

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

Я НАСТОЯЩЕМУ надеюсь, что вы можете мне помочь, потому что я не понимаю эту сумасшедшую проблему. благодаря

+3

Довольно старый пост, я предполагаю, что это решается тем временем, но для истории: Убедитесь, что вы как добавить '- (BOOL) применение: (UIApplication *) применение handleOpenURL: (NSURL *) URL { возвращение [FBSession .activeSession handleOpenURL: url]; } ' и - (void) applicationDidBecomeActive: (приложение UIApplication *) { [FBSession.activeSession handleDidBecomeActive]; } ' для вашего делегата приложения – Skrew

ответ

3

Добавление и

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

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
[FBSession.activeSession handleDidBecomeActive]; 
} 

работал!

Все кредиты идут к этому делу.