Secondo aggiornamento Dopo aver fatto qualche altro scavo, sembra esserci un problema più grande in gioco.Facebook SDK 3.0 IOS 6 callback dopo il login non chiamato
Il motivo per cui openURL non viene attivato, è che l'applicazione sembra bloccarsi quando viene riportata in primo piano.
Se avvio la mia app, faccio clic sul pulsante Home (torno alla schermata iniziale) e ricarico la mia app (non il pieno rilancio ma solo un ripristino), l'app si apre, ma tutto è bloccato.
- (void) applicationWillEnterForeground: (UIApplication *) applicazione
viene attivato quando l'applicazione ritorna, ma dopo che non succede nulla. Usando il simulatore per IOS 6.0, non mi capita affatto di bloccarmi, ma l'app si limita a stare lì senza fare nulla. Fare clic sullo schermo non fa nulla. Se clicco sulla schermata iniziale posso tornare alla schermata principale.
Quindi la ragione per cui openIURL non viene attivato è perché l'app si blocca quando ritorna dal login di Facebook da Safari o da Facebook. Non ha nulla a che fare con l'SDK di Facebook.
Perché sta succedendo?
Aggiornamento Sembra che il problema sia correlato all'apertura di openURL. L'app si apre quando l'URL personalizzato viene eseguito dall'app Safari o Facebook. Se creo un'applicazione nuova, funziona.
Un altro problema correlatoapplication open Url method not called after user authenticates the facebook
Ho un app che usa facebook login con facebook SDK 3.0.
sotto iOS 5 il flusso funziona come previsto e lo faccio vedere l'output di è connesso:
NSArray *permissions = [[NSArray alloc] initWithObjects: @"publish_stream",@"offline_access",@"email",nil];
[FBSession openActiveSessionWithPermissions:permissions allowLoginUI:YES
completionHandler:^(FBSession *session,
FBSessionState status,
NSError *error) {
if(session.isOpen){
NSLog(@"IS LOGGED IN");
}
}];
[permissions release];
Nel mio delegato App la funzione openURL è la seguente
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [[FBSession activeSession] handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
return [[FBSession activeSession] handleOpenURL:url];
}
Anche in questo caso, sotto IOS 5 la funzione openURL è chiamata dopo un login riuscito tramite Facebook.
In IOS 6, quando eseguo openActiveSessionWithPermission (accesso) .. openURL non viene mai richiamato.
mi hanno fornito le informazioni necessarie nel mio file .plist secondo la documentazione facebook
FacebookAppID = (My Facebook App ID)
e
URL types
-> Item 0
-> URL Schemes
-> Item 0 = (My Facebook App ID)
Non sei sicuro di quello che sta succedendo con la tua applicazione. Ma nella mia app, non ho il primo metodo di delega dell'app nel mio Appdelegate.m. Solo il 2 °. Inoltre, potresti dare un'occhiata al mio progetto di esempio sul mio blog tutorial: http://xcodenoobies.blogspot.com/2012/09/how-to-upload-photo-and-update-status.html. Inoltre, vorrei aggiungere, se hai 2 app (come una Lite e Pro), utilizzando la stessa FacebookAppID per entrambe le app causerà un arresto anomalo. Ci sono alcune cose in più da fare se si desidera utilizzare lo stesso fbappid per 2 o più app (fare riferimento a Facebook devs wiki) – GeneCode
ho anche lo stesso problema ma con Facebook SDK 2.0 quindi dubito che sia iOS 6 correlato –
way openActiveSessionWithPermissions è diventato obsoleto in IOS 3.1 ma non credo che sia correlato a questo. Dovresti concedere il permesso per la lettura di withopenActiveSessionWithReadPermissions e openActiveSessionWithPublishPermissions per la pubblicazione –