Zweites Update Nach etwas mehr Graben scheint es ein größeres Problem zu geben.Facebook SDK 3.0 IOS 6 Rückruf nach Login nicht angerufen
Der Grund, warum openURL nicht ausgelöst wird, ist, dass die App zu frieren scheint, wenn sie wieder in den Vordergrund gebracht wird.
Wenn ich meine App starten, klicken Sie auf die Home-Taste (zurück zum Startbildschirm), und laden Sie meine App (nicht vollständigen Neustart, sondern nur eine Wiederherstellung), die App öffnet, aber alles ist eingefroren.
- (void) applicationWillEnterForeground: (UIApplication *) Anwendung
ausgelöst, wenn der App kommt zurück, aber nach, dass nichts passiert. Mit dem Simulator für IOS 6.0 bekomme ich keinen Absturz, aber die App sitzt einfach da und macht nichts. Klicken Sie auf den Bildschirm tut nichts. Wenn ich auf den Startbildschirm klicke, kann ich zum Startbildschirm zurückkehren.
Der Grund, warum openIURL nicht gefeuert wird, ist, weil die App einfriert, wenn sie von Facebook Login entweder von Safari oder Facebook App zurückkommt. Es hat nichts mit dem Facebook SDK zu tun.
Warum passiert das?
Aktualisieren Scheint, dass das Problem damit verbunden ist, dass openURL nicht aufgerufen wird. Die App wird geöffnet, wenn die benutzerdefinierte URL von Safari oder Facebook App ausgeführt wird. Wenn ich eine brandneue App erstelle, funktioniert es.
Ein weiteres Problem in Zusammenhangapplication open Url method not called after user authenticates the facebook
Ich habe eine Anwendung, die Facebook Anmeldung mit dem Facebook SDK 3.0 verwendet.
Unter IOS 5 der Fluss funktioniert wie vorgesehen, und ich sehe die Ausgabe angemeldet ist:
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];
In meiner App delegieren die openURL Funktion wird wie folgt
- (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];
}
Wieder unter IOS 5 Die openURL-Funktion wird nach einem erfolgreichen Login über Facebook aufgerufen.
Unter IOS 6, wenn ich die openActiveSessionWithPermission (Login) ausführen .. die openURL wird nie zurückgerufen.
Ich habe die notwendigen Informationen in meiner .plist-Datei geliefert nach Facebook-Dokumentation
FacebookAppID = (My Facebook App ID)
und
URL types
-> Item 0
-> URL Schemes
-> Item 0 = (My Facebook App ID)
nicht sicher, was passiert mit Ihrer App zu aktualisieren. Aber in meiner App habe ich nicht die erste App-Delegate-Methode in meinem Appdelegate.m. Nur der zweite. Vielleicht möchten Sie sich auch mein Beispielprojekt in meinem Tutorial-Blog ansehen: http://xcodenoobies.blogspot.com/2012/09/how-to-upload-photo-and-update-status.html. Außerdem möchte ich hinzufügen, dass, wenn Sie 2 Apps haben (wie ein Lite und Pro), die gleiche FacebookAppID für beide Apps einen Absturz verursacht. Es gibt einige zusätzliche Dinge zu tun, wenn Sie das gleiche fbappid für 2 oder mehr Apps verwenden möchten (siehe Facebook Devices Wiki) – GeneCode
Ich habe auch das gleiche Problem, aber mit Facebook SDK 2.0, so bezweifle ich, dass es iOS 6 bezogen –
Durch die way openActiveSessionWithPermissions ist in IOS 3.1 veraltet, aber ich glaube nicht, dass es damit zusammenhängt. Sie sollten die Berechtigung zum Lesen mitopenActiveSessionWithReadPermissions und openActiveSessionWithPublishPermissions zum Veröffentlichen erteilen. –