2012-09-19 3 views
10

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) 
+0

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

+0

Ich habe auch das gleiche Problem, aber mit Facebook SDK 2.0, so bezweifle ich, dass es iOS 6 bezogen –

+0

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. –

Antwort

1

Das Problem wurde mit der Art und Weise in Verbindung gebracht, in der ich TWTweetComposeViewController in meiner App verwendete, also hängt es nicht mit dem Facebook SDK zusammen.

Das Problem war, dass ich meine TWTweetComposeViewController in meinem ViewDidLoad initialisiert und nicht verwendet, bis benötigt. Wenn der TWTweetComposeViewController jedoch nicht angezeigt wird, aber initialisiert wird, wird die Anwendung eingefroren, wenn sie vom Hintergrundmodus aus gestartet wird.

Das Problem besteht nur darin, TWTweetComposeViewController zu initialisieren, wenn Sie es gerade zeigen.

0

diese Shireesh von Facebook ist. Kannst du bitte einen Fehler auf unserer Entwicklerwebseite einreichen, damit wir ihn genauer betrachten können? Bitte stellen Sie sicher, detaillierte Repro-Schritte zur Verfügung zu stellen und Screenshot beizufügen, wenn möglich. https://developers.facebook.com/bugs

1

Könnte dies möglicherweise daran liegen, dass Ihre App nicht im Hintergrund ausgeführt wird, wie in Ihrer App eingestellt? Ich habe das gleiche Problem. Es scheint, dass, wenn die App im Hintergrund ausgeführt wird, sie zurückkehrt und openURL aufruft.Wenn die App jedoch nicht im Hintergrund ausgeführt wird, kehrt sie zurück und ruft stattdessen application: didFinishLaunchingWithOptions auf und ruft openURL nicht auf. Es ist möglich, die URL aus den Start-Optionen zu erhalten:

NSURL *url = [launchOptions objectForKey: UIApplicationLaunchOptionsURLKey]; 

aber ich habe nicht herausgefunden, wie diese zu nennen, so dass es die gleiche Wirkung wie Anwendung hat: openURL, wenn sie von Facebook-Authentifizierung zurück. Hoffe das hilft einigen.

+0

hey Ich habe das gleiche Problem, wie haben Sie es gelöst? – Andres

0

Ich richte zwei Suffixe unter Facebook für meine App: kostenlose und kostenpflichtige wie fbxxxxxxpaid

Sie unter SDK perfekt funktionieren 2.0 aber in 3.2 meine app nicht zurück, und ich habe mit einem der leeren Leinwand geklebt genannt mit einem Abbrechen-Button.

Ich habe das Suffix aus den URL-Schemas entfernt und es hat sofort funktioniert.

Ich hatte meine App nach dieser https://developers.facebook.com/docs/howtos/share-appid-across-multiple-apps-ios-sdk/