2013-04-05 14 views
22

Ciao io sto ussing iOS6 per facebook login e sto ottenendo questo errore come popup nativoImpossibile completare l'operazione. (Errore com.facebook.sdk 2.) iOS6

L'operazione non ha potuto essere completato. (errore com.facebook.sdk 2.)

Questo è lo scenario che si utilizza. (Sto facendo funzionare questo su simularor)

ho effettuato l'accesso al applicazione Facebook tramite le impostazioni e ho cercato di accedere alla mia app e relativo funzionamento benissimo.

Quindi ho disconnesso da Facebook dalle impostazioni e ho effettuato di nuovo l'accesso con un altro utente. Quindi ho provato ad accedere all'app. Sto ottenendo questo errore.

ho provato loging fuori l'applicazione utilizzando il comando

[FBSession.activeSession closeAndClearTokenInformation];

ma non serve.

L'identificativo del pacchetto nell'app di Facebook è uguale a quello della mia app ios.

Questo è il codice che ho usato per accedere

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

Ogni aiuto è apprezzato.

Questo è l'errore che sto ottenendo

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

NOTA ho ottenuto lo stesso errore su un occation diversa. A quel tempo si trattava di un bug nel mio codice

Invece di dare il permesso come

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

stavo torto facendo come

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

SOLUZIONE Anche dopo la correzione il codice, stavo ottenendo lo stesso errore. Devo uscire e accedere a Facebook dalla schermata delle impostazioni di ios. Una volta fatto ciò, il codice corretto non ha mai causato alcun problema. Si noti che il problema si è verificato solo sul dispositivo che ha eseguito in precedenza il codice buggato. Nota sicuro che cosa ha causato il problema, Spero che questo informazioni aiuta qualcuno

+0

Il seguente collegamento ha risolto il mio problema. http://stackoverflow.com/questions/12838118/facebook-authorization-fails-on-ios6-when-switching-fb-account-on-device Grazie, –

risposta

9

controllare l'identificativo Bundle per il vostro progetto e vi darà identificatore Bundle per la vostra applicazione, che creano sul developer.facebook.com che essi sono gli stessi o no.

+0

Quelle sono gli stessi. Grazie –

+0

Questo problema è stato risolto http://stackoverflow.com/questions/12838118/facebook-authorization-fails-on-ios6-when-switching-fb-account-on-device –

+0

È uguale all'ID app :? – coolcool1994

0

Ho avuto un problema simile. l'errore si verifica quando ho commutato l'utente fb dall'impostazione. Facebook authorization fails on iOS6 when switching FB account on device Questo risolto il mio problema

+8

Si prega di considerare l'aggiunta di * quale parte * di quella domanda ha risolto il problema. Contiene tre risposte, nessuna delle quali è stata verificata come accettata. Non è utile indicare semplicemente un'altra domanda come risposta. –

23

Questo ha funzionato per me:

  • andare nelle impostazioni del vostro iPhone app.
  • Apri le tue impostazioni di Facebook
  • Scorri verso il basso fino alla tua app e assicurati che l'app consenta l'interazione con Facebook .

Questo potrebbe accadere su qualsiasi dispositivo, quindi nella tua app dovrai assicurarti di gestire correttamente questo errore. Suppongo che tu dia il feedback degli utenti perché Login with Facebook non è riuscito e chiedi all'utente di verificare le loro impostazioni di Facebook sul loro dispositivo.

- (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

La visualizzazione di avviso deve essere racchiusa in un blocco if (errore) {}, in questo momento l'avviso verrà visualizzato ogni volta che l'utente si disconnette, quando in realtà, deve solo mostrare quando si verifica un errore. – neverbendeasy

+0

Grazie! L'ho cambiato nella risposta. – Bocaxica

+0

Grazie mille. Ottima spiegazione :) – Karun

8

Un'altra potenziale causa di questo errore: Il tentativo di ottenere il permesso per un'applicazione Facebook in modalità sandbox quando l'utente di Facebook non è elencato nella amministratori, sviluppatori o tester della app.

0

Ho avuto lo stesso problema e ho impiegato un'intera giornata per capire il problema. Questo messaggio di errore di Facebook SDK è molto vago. Ho avuto questo problema a causa di openURL: il metodo viene sovrascritto in MyApplication. Ho rimosso il metodo sovrascritto e l'accesso a Facebook ha funzionato bene.

+0

Ti sei assicurato di implementare 'openURL:' con una chiamata per restituire '[FBAppCall handleOpenURL: url sourceApplication: sourceApplication];'? Questo è richiesto da Facebook SDK per funzionare correttamente, ma finché lo fai, dovresti comunque essere in grado di implementare openURL per altri usi. – davidgoli

0

Per me il problema era autorizzazioni non valide: stavo richiedendo "compleanno" anziché "user_birthday". È un peccato che il messaggio di errore non sia almeno minimamente descrittivo - solo dicendo "autorizzazioni non valide" piuttosto che ERRORE CODICE 2 mi avrebbe risparmiato così tanto tempo.

3

Ho risolto il problema passando il permesso nil durante l'accesso.

[FBSession openActiveSessionWithReadPermissions:nil 
             allowLoginUI:YES 
            completionHandler: