2010-03-21 8 views
5

Genau das, was der Titel sagt. Ist es möglich, Facebook Connect (oder jedes andere Mittel der FB-Integration) in einer nativen iPhone-App zu verwenden, ohne auf den eingebauten Login-Dialog zurückzugreifen (was schrecklich aussieht)? Etwas, wo ich meinen eigenen benutzerdefinierten Anmeldebildschirm erstellen könnte, der nach dem Benutzernamen und dem Passwort für die Facebook-Anmeldung fragt und dann die nativen Methoden von fbconnect verwendet, um diese Informationen zu validieren und eine gültige Sitzung abzurufen?iPhone SDK/Facebook Connect: Mit einem benutzerdefinierten Login-Dialog

+0

Wenn Sie sagen, der LoginDialog ist schrecklich, meinst du, dass der Bildschirm alles durcheinander ist, weil die Benutzer scrollen müssen, um die Textfelder zu finden ??? Wenn ja, gibt es eine Arbeit um den LoginDialog Bildschirm hübsch aussehen, d. H. Passen Sie den gesamten Bildschirm, ohne zu scrollen. – Raja

+0

@Raja Haben Sie einen Link zu Informationen zu dieser Problemumgehung? –

+0

@Raja: Ich meine schrecklich in dem Sinne, dass es genauso aussieht wie das, was es ist, ein UIWebView eingebettet auf einem halbgebackenen Leuchtkasten, der irgendwie alle Arten von benutzerdefinierten Schnittstellen bricht, die Sie in Ihre eigene Anwendung einfügen möchten. – boliva

Antwort

3

Tun Sie es nicht. Dies ist gegen Richtlinien und Ihre Anwendung wird dafür heruntergefahren. Wie von quixoto vorgeschlagen, liegt das daran, dass wir die Benutzer nicht darin trainieren wollen, ihr Passwort an zufälligen Orten einzugeben, und weil der Benutzer die Aktion gemäß unseren UX-Anforderungen nicht bestätigt hat. Wir arbeiten gerade an einer Neugestaltung dieser Dialoge, um sie schöner zu machen.

+0

Danke daaku. Dies ist eine wirklich alte Frage (in der Entwicklungszeit), aber da Sie ein offizieller FBConnect-Entwickler zu sein scheinen (oder irgendeine Art von Autorität dazu haben), akzeptiere ich gerne Ihre Antwort. – boliva

+0

Heh - yeah, ich habe erst kürzlich begonnen, Stack Overflow zu betrachten :) – daaku

+0

Obwohl benutzerdefinierte Anmeldeformulare großartig sein können, wünschte ich, Twitter hätte auch so etwas. – samvermette

2

Als ich in Facebook Connect schaute, schienen sie ziemlich streng auf ihre API und alle Mods, die Sie vielleicht machen möchten. Nicht ein einziges Mal wird auf facebook.com/x erwähnt, dass die Benutzeroberfläche angepasst werden muss, daher denke ich, dass Sie bei dem bleiben müssen, was sie genehmigt haben.

+0

Facebook gehört nicht dir, es gehört ihnen. Wenn du also in ihrem Haus wohnst und ihren Code verwendest, musst du nach ihren Regeln spielen. Wenn Sie es nicht mögen, rollen Sie Ihre eigene API über http mit den nativen Framework-Klassen – slf

+0

@slf: Ich bin mir dessen bewusst. Deshalb frage ich, ob jemand einen alternativen Weg mit einer bereits existierenden API kennt, die die Dienste von FB nutzt, und es scheint so weit, dass die Antwort "nein" ist ... – boliva

0

Was wäre wunderbar, wenn der Login-Dialog tatsächlich durchgeführt Basic Form Validierung mindestens. Sie können das Formular senden, ohne Ihre E-Mail-Adresse oder Ihr Passwort einzugeben. Shoddy, schäbig, UI-Arbeit.

2

Ja und nein.

Facebook verwendet delegierte Authentifizierung, damit Ihre Anwendung eine Verbindung damit herstellen kann. Daher soll der Benutzer sein Passwort in etwas "Vertrauenswürdiges" (z. B. die Facebook-Login-Seite) setzen, damit Ihre App es nicht wirklich sieht und nur den Schlüssel als Ergebnis erhält. Die Idee ist, dass Benutzer so trainiert werden, anderen Webseiten/Apps nicht mit ihrem Passwort zu vertrauen.

Daher stellt FB dieses Web-Popup in ihrer FBConnect-Bibliothek zur Verfügung, ohne dass eine andere explizite Möglichkeit besteht, die Anmeldeinformationen eines Benutzers in eine Sitzung umzuwandeln.

Das sagte, und ich werde Ihre technische Frage beantworten, da es eine legitime Frage ist; Sie könnten tun, was Sie wollten, indem Sie ein Offscreen-UIWebView erstellen, das Hosting der URL der FB-Anmeldung in dieser Webansicht und das Einfügen von Javascript in die Seite mithilfe von stringByEvaluatingJavaScriptFromString:. Das Javascript könnte den Benutzernamen/das Passwort annehmen, das Formular ausfüllen und abschicken, ohne dass der Nutzer es jemals sieht. Lesen Sie den Code der FBConnect-Bibliothek, um zu verstehen, welche URL zu verwenden ist und was mit dem Ergebnis der Übergabe der Seite zu tun ist - Sie könnten das zurück in die Bibliothek leiten.

Dies ist (1) zerbrechlich, da Sie sich auf IDs und Sachen verlassen müssen, die sich ändern können, um nur solche Techniken zu besiegen und (2) wahrscheinlich die Nutzungsbedingungen von FB Connect verletzen und natürlich (3) nicht gut für die Gesundheit von Auth im Web im Allgemeinen, da es nicht bekräftigt, dass Benutzer nicht mit ihren Passwörtern Dritten vertrauen sollten.

Und es sollte absolut selbstverständlich sein, dass, wenn Sie es alleine gehen und Benutzern eine besser aussehende Auth-Erfahrung geben, nie, speichern oder irgendetwas mit ihren Anmeldeinformationen tun, außer sie Facebook zu geben.

+0

@quixoto: Ich habe daran gedacht etwas Ähnliches zu tun, aber wie du sagst, es könnte jeden Moment brechen. – boliva

+0

Leider glaube ich nicht, dass Sie eine Lösung finden, die stabiler ist als diese; Die delegierte Authentifizierung von Facebook ist die Art und Weise, wie Sie sich mit ihnen authentifizieren können - Sie können diese Webinteraktion in einer versteckten Ansicht einbinden oder manuell einen NSURLConnection-Socket mit einer ganzen Reihe von intelligenten Heuristiken verwenden, um die richtigen Felder usw. zu finden. Aber egal, was, du wirst auf einer gewissen Ebene fragil sein, da sie nichts über die Interna garantieren, außer dass die Authentifizierungs-URL dieselbe bleibt. –

Verwandte Themen