fbDidLogin non chiamato

Quindi, ho lavorato un po 'con l'SDK di Facebook per iOS e dall'ultima versione non riesco a ricall il metodo fbDidLogin. La procedura di accesso funziona correttamente, con Safari utilizzato sul simulatore e l'app Facebook utilizzata durante l'esecuzione su un dispositivo. Tuttavia, dopo aver effettuato l'accesso, mi ritrasferiscono alla mia app (come dovrei essere) ma non è stato chiamato il metodo fbDidLogin, non è cambiato nulla. Per quanto riguarda la mia app, non ho effettuato l'accesso. L'app demo che è in bundle con l'SDK funziona bene. Quindi ovviamente sto facendo qualcosa di sbagliato, ma non ho idea di come controllare cosa. Ho ricontrollato tutti i methods utilizzati nell'app demo contro il mio e per quanto posso vedere tutto sembra uguale. Qualche idea o idea su come eseguire il debug di questo? O qualcuno ha avuto problemi simili?

Grazie!

Solutions Collecting From Web of "fbDidLogin non chiamato"

Ho incontrato lo stesso problema solo ora. Ho risolto il problema aggiungendo il seguente codice al delegato dell'applicazione:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [[controller facebook] handleOpenURL:url]; } 

where controller è la mia istanza di UIViewController e Facebook è la mia istanza di Facebook .

Devi anche registrare la tua app per gestire lo schema URL dell'applicazione fb (fallo in Info.plist).

Un errore comune potrebbe essere quello di non implementare il seguente metodo di callback nel delegato dell'app principale, ma altrove. Implementare questo metodo nella class derivato da UIApplicationDelegate. Questo è il punto di ingresso che iOS chiama dopo l'interruttore di context per riportre l'applicazione in primo piano.

 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { // obtain facebook instance ref [ facebook handleOpenURL: url ]; } 

Se hai creato correttamente l'ID applicazione FB e hai mappato l'URL in modo appropriato come definito in https://developers.facebook.com/docs/guides/mobile/#ios, allora dovrebbe funzionare.

Ho risolto il problema, se facebook è l'object del tuo primo viewcontroller che viene caricato da tuo appdelegate, allora puoi usare la properties; viewcontroller di appdelegate per fare riferimento ad un object facebook ad es.

 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { [ viewController.facebook handleOpenURL: url ]; } 

La mia causa era che non avevo l'init di Facebook in ApDelegate usando il delegato corretto. L'ho fatto indicando se stesso, quando dovrebbe usare il controller di visualizzazione in cui l'utente ha effettivamente eseguito il login.

Da AppDelegate:

 facebook = [[Facebook alloc] initWithAppId:@"111111111111111" andDelegate:homeViewController]; 
 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [ facebook handleOpenURL:url]; } 

dovrebbe scrivere su AppDelegate.m in modo che sia accessibile per l'intera app.

per favore mi piace se funziona

Come ha detto Jiri nel primo commento, dovresti implementare questi methods nel tuo delegato dell'app

 -(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [[loginScreen facebook] handleOpenURL:url]; } 

Dove loginScreen è il tuo controller di visualizzazione che desideri utilizzare per la logging o creare qualcos'altro con Facebook, il punto è che si tratta di un luogo diverso dal delegato dell'app.

Elimina questo metodo se lo stai usando

 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { } 

Recentemente ho appena incontrato anche questo. Il mio problema era che le impostazioni dell'app su Facebook erano configurate in modo tale che l'app non era autorizzata. Quindi, veniva chiamato il mio metodo fbDidNotLogin. La soluzione era di andare a

  • Facebook Developers -> Apps -> La My App -> Edit Settings -> Di Basic
  • Assicurati che nella sezione "Seleziona come la tua app si integra con Facebook" la categoria "App nativa per iOS" non è stata abilitata (segno di spunta verde).