2012-10-07 7 views
6

In meiner iPhone App möchte ich, dass der Benutzer einen Link auf Facebook teilen kann.Facebook SDK - iOS6 Login-Popup kann nicht entlassen werden

Wenn sie auf "share" klicken, verwende ich den folgenden Code, um mich mit dem neuen SDK 3.1 bei Facebook anzumelden, und dann FBRequestConnection im Completion-Handler (ein einfacher publish_action).

[FBSession openActiveSessionWithPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends allowLoginUI:true completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { 

    // Now call FBRequestConnection to post in the stream 

}]; 

Wenn der Benutzer die Facebook App installiert hat, delegiert er nur die Anmeldung an die App. Wenn dies jedoch nicht der Fall ist, wird die Anmeldeseite in einem WebView geöffnet.

In iOS 5, öffnet es Mobile Safari:

enter image description here

Mein Problem ist auf iOS 6, ich den gleichen Fluss, aber in einem modalen Popup-Fenster statt (auf meinem app).

enter image description here

Ich habe 2 Probleme mit dem Pop-up:

1. Schließen sie

Es kann nicht storniert oder zurückzuweisen. Im Vergleich hat die HelloFacebookSample App aus dem SDK das gleiche Popup, aber mit einem Kreuz-Button, um es zu schließen.

enter image description here

HINWEIS: jetzt gelöst dank Ravi, war ich das Facebook-Ressourcenpaket fehlt, die das „Schließen“ Bild enthält.

2. Die Berechtigungen annehmen

Auf der zweiten Stufe des Popup (siehe Bildschirme oben), drücken Ok nichts tun. Das Drücken des "X" ruft den Beendigungshandler mit einem Fehler auf, was großartig ist, aber nichts passiert mit Okay. Ist dies der richtige Weg, um sich mit dem SDK 3.1 bei Facebook anzumelden? Fehle ich einen Rückruf, um speziell auf das Popup zu reagieren?

Einige weitere Erläuterungen:

Dies geschieht nur in iOS6, wenn die Facebook-App nicht installiert ist und das Facebook-Konto ist nicht in den Einstellungen iOS konfiguriert.

Vielen Dank!

+0

1 im mit ähnlichem Problem nach FB 3.0SDk aktualisiert – iMeMyself

+1

könnte ein Fehler in dem SDK sein. Nur eine Notiz; Facebook regt an, nach Veröffentlichungsberechtigungen zu fragen, wenn Sie tatsächlich publizieren (und nicht, wenn Sie eine Verbindung herstellen): http://developers.facebook.com/docs/howtos/ios-6/ –

+0

Danke Kristofer - durch "führe eine publish_action später aus" I eigentlich gemeint, sobald der Login-Callback ankommt. Ich denke, das sollte in Ordnung sein. – Gromix

Antwort

7

Ich kann nicht kommentieren, da mein Ruf weniger als 50 ist, also versuche, meine Beobachtungen als Antwort aufzuzeigen.

Ich bemerkte dieses Problem auch bei der Verwendung von Facebook sdk3.1 auf ios6.In meinem Fall verwende ich die facebook-Objekt-Erstellung im alten Stil und rufe [facebook authorize:permissions] darauf, aber ich habe den Quellcode so geändert, dass immer "FBSessionLoginBehaviorForcingWebView" verwendet wird, so dass mein Login immer über In-App-Web-Login erfolgt.

In meinem Fall fehlte mir FBUserSettingsViewResources.bundle und FacebookSDKResources.bundle, so dass ich den Kreuzknopf nicht sehen konnte (aber ich konnte auf diesen Punkt tippen und Rückruf - (void)fbDidNotLogin:(BOOL)cancelled {) bekommen.

+0

Vielen Dank, das ist definitiv ein Schritt in die richtige Richtung! Mir fehlte auch das Ressourcenbündel. Ich kann jetzt den Schließen-Button sehen und antippen. Der "Okay" -Knopf auf der rechten Seite tut immer noch nichts, was ein anderes Problem sein könnte. – Gromix

+0

auch nach dem Hinzufügen von FBUserSettingsViewResources.bundle und FacwebookSDKResources.bundle kann ich nicht abbrechen Schaltfläche .. – iMeMyself

+0

@ravi: wenn Sie mich nicht fragen, was Sie erhalten, dass zweite Popup WebView sagt 'Sie haben diese App bereits autorisiert [ Okay] '? Und wenn ja, wissen Sie, welche Methode aufgerufen wird, wenn Sie auf "Okay" klicken? Ich verstehe nicht, warum ich nicht richtig verkabelt bin. – Gromix

0

ich auch dieses Problem festgestellt und es scheint ein bekannter Fehler zu sein:

https://developers.facebook.com/bugs/539702426044893?browse=search_507daefc9af416244781488

ich nicht das Problem noch nicht gelöst haben, aber für mich scheint es nur im Simulator geschehen. Meine app scheint immer durch Safari anmelden, wenn auf einem Gerät installiert

Edit: Also nach einem wenig mehr Graben stieß ich auf diesem Stack-Überlauf thread: FBConnect login, share with a webview?

Ich erkennen, dass der Dialog sehen wir a uiWebView, das ist eigentlich der Fallback, wenn die App den Dialog in Safari nicht öffnen kann. Ich konnte mein Problem lösen, indem ich meinen Simulator zurücksetzte, was die Cookies im Wesentlichen säubern würde. Von deinem Screenshot glaube ich, dass du auch im Simulator arbeitest. Ich frage mich, ob Sie den Simulator zurücksetzen, wenn Sie die gleichen Ergebnisse hätten?

aus dem Menü iOS Simulator -> Zurücksetzen Inhalt und Einstellungen ...

Verwandte Themen