2013-04-05 1 views
22

Привет, я пользуюсь ios6 для входа в facebook, и я получаю эту ошибку как собственное всплывающее окноОперация не может быть выполнена. (ошибка com.facebook.sdk 2.) ios6

Операция не может быть завершена. (ошибка com.facebook.sdk 2.)

Это используемый сценарий. (Я запускаю это на simularor)

Я зарегистрировался в приложении facebook через настройки, и я попытался войти в свое приложение и его работу отлично.

Затем я вышел из фейсбука из настроек и снова вошел в систему с другим пользователем. Затем я попытался войти в приложение. Я получаю эту ошибку.

Я попытался Loging из приложения с помощью команды

[FBSession.activeSession closeAndClearTokenInformation];

Но не использовать.

Идентификатор связки в приложении facebook такой же, как и в моем приложении ios.

это код, который я использовал для входа

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email", nil]; 
    [FBSession openActiveSessionWithReadPermissions:permissions 
             allowLoginUI:YES 
            completionHandler: 
    ^(FBSession *session, 
     FBSessionState state, NSError *error) { 
     [self sessionStateChanged:session state:state error:error]; 
    }]; 

Любая помощь приветствуется.

Это ошибка, я получаю

Domain=com.facebook.sdk Code=2 "The operation couldn’t be completed. (com.facebook.sdk error 2.)" UserInfo=0x9535330 {com.facebook.sdk:ErrorLoginFailedReason=com.facebook.sdk:SystemLoginDisallowedWithoutError, com.facebook.sdk:ErrorSessionKey=, expirationDate: (null), refreshDate: (null), attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(null)>}

ПРИМЕЧАНИЕ Я получил ту же ошибку на другой occation. В то время это была ошибка в моем коде

Вместо того чтобы дать разрешение, как

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email",@"birthday", nil];

я был неправильно делать это как

NSArray *permissions = [[NSArray alloc] initWithObjects:@"email,birthday", nil];

РЕШЕНИЕ Даже после коррекции код, я получал ту же ошибку. Мне нужно выйти и войти в facebook с экрана настроек ios. Как только я это сделал, правильный код никогда не вызывал никаких проблем. Обратите внимание, что проблема возникла только на устройстве, которое ранее выполняло багги-код. Заметьте, что вызвало эту проблему, Надеюсь, что эта информация поможет кому-то

+0

Следующая ссылка решена моя проблема. http://stackoverflow.com/questions/12838118/facebook-authorization-fails-on-ios6-when-switching-fb-account-on-device Спасибо, –

ответ

9

проверить свой идентификатор Bundle для вашего проекта и дать идентификатор Bundle для вашего приложения, которые создают на developer.facebook.com, что они такие же или нет.

+0

те же. Спасибо –

+0

Это решило проблему http://stackoverflow.com/questions/12838118/facebook-authorization-fails-on-ios6-when-switching-fb-account-on-device –

+0

Это то же самое, что и для ID приложения :? – coolcool1994

0

У меня была аналогичная проблема. ошибка возникает, когда я переключил пользователя fb из настройки. Facebook authorization fails on iOS6 when switching FB account on device Это решило мою проблему

+8

Пожалуйста, подумайте над добавлением *, какая часть * этого вопроса решила вашу проблему. Он содержит три ответа, не проверенные как принятые. Просто указывая в целом на другой вопрос, как ответ, это не полезно. –

23

Это работало для меня:

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

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

- (void)facebookSessionStateChanged:(FBSession *)session state:(FBSessionState)state error:(NSError *)error 
{ 
    switch (state) { 
     case FBSessionStateOpen: 
      // handle successful login here 
     case FBSessionStateClosed: 
     case FBSessionStateClosedLoginFailed: 
      [FBSession.activeSession closeAndClearTokenInformation]; 

      if (error) { 
       // handle error here, for example by showing an alert to the user 
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Could not login with Facebook" 
                   message:@"Facebook login failed. Please check your Facebook settings on your phone." 
                   delegate:nil 
                 cancelButtonTitle:@"OK" 
                otherButtonTitles:nil]; 
       [alert show]; 
      } 
      break; 
     default: 
      break; 
    } 
+0

Представление предупреждения должно быть обернуто в блок if (error) {}, теперь предупреждение будет отображаться каждый раз, когда пользователь выходит из системы, когда он действительно должен отображаться только при возникновении ошибки. – neverbendeasy

+0

Спасибо! Я изменил его в ответе. – Bocaxica

+0

Спасибо вам большое. Отличное объяснение :) – Karun

8

Другой потенциальной причиной этой ошибки: Попытка получить разрешение на приложение Facebook в изолированном режиме, когда пользователь Facebook не отображается в приложении по Админы, разработчиков и тестеров.

0

У меня была такая же проблема, и я потратил целый день на выяснение проблемы. Это сообщение об ошибке с помощью SDK для Facebook очень расплывчато. У меня возникла эта проблема из-за того, что метод openURL: перезаписывается в MyApplication. Я удалил перезаписанный метод, и логин facebook работал нормально.

+0

Вы выполнили реализацию 'openURL:' с вызовом return '[FBAppCall handleOpenURL: url sourceApplication: sourceApplication];'? Это необходимо, чтобы SDK Facebook работал правильно, но пока вы это делаете, вы все равно сможете реализовать openURL для других целей. – davidgoli

0

Для меня проблема была с недействительными разрешениями - я запрашивал «день рождения» вместо «user_birthday». Жаль, что сообщение об ошибке не является, по крайней мере, минимально-описательным, просто говоря «недопустимые разрешения», а не ERROR CODE 2, это спасло бы меня так много времени.

3

Я решаю свою проблему, передавая разрешение nil во время входа в систему.

[FBSession openActiveSessionWithReadPermissions:nil 
             allowLoginUI:YES 
            completionHandler: