Mit Apple anmelden

Die Probleme 1 und 2 sind auf eine bewusste Implementierungsentscheidung von Apple zurückzuführen. Es handelt sich also nicht wirklich um einen technischen Vorfall, und wir können sie umgehen. Problem 3 liegt beim omniauth-apple-Gem, sodass wir es beheben können.

Was wir von Apple benötigen, ist die Einbeziehung von Name und E-Mail-Adresse in nachfolgende Authentifizierungsabläufe. Leider haben sie das Verhalten bestätigt und angegeben, dass dies beabsichtigt ist: Cannot get email & name while scop… | Apple Developer Forums

Dies verhält sich korrekt. Benutzerinformationen werden nur beim ersten Benutzer-Login über ASAuthorizationAppleIDCredential gesendet. Bei nachfolgenden Anmeldungen in Ihrer App mit „Anmelden mit Apple

3 „Gefällt mir“

[quote=“david, Beitrag: 42, Thema: 122790”]
Mich würde trotzdem interessieren, ob jemand andere Websites gesehen hat, die „Anmelden mit Apple

Meiner Meinung nach wäre es dennoch sinnvoll, sich mit dem Apple DTS in Verbindung zu setzen, um zu erfahren, welche Workarounds sie empfehlen, und ihnen zudem das Feedback zu geben, dass dies Probleme verursacht. (Leider bin ich selbst nicht ausreichend mit diesem Thema vertraut, um dieses Gespräch mit ihnen zu führen.)

[quote=“david, Beitrag: 42, Thema: 122790”]
Mich würde jedoch interessieren, ob jemand andere Websites gesehen hat, die „Anmelden mit Apple

3 „Gefällt mir“

Sie verwenden möglicherweise jedoch eine andere API. Es gibt ein JS-Skript, das Sie hinzufügen können, aber ich vermute, dass dies nicht mit dem allgemeineren OAuth-System von Discourse integriert werden kann:

Nehmen wir Kayak.com.

Wenn ich im Browser-Inspektor etwas recherchiere, finde ich Folgendes:

image

1 „Gefällt mir“

Ja, sie verwenden Apples JavaScript-Bibliothek. Im Hintergrund wird jedoch weiterhin dieselbe „OAuth

6 „Gefällt mir“

Ich denke, alle neuesten iOS-Änderungen von Apple machen das jetzt machbar, oder?

3 „Gefällt mir“

Hat sich kürzlich etwas im Zusammenhang mit „Anmelden mit Apple

5 „Gefällt mir“

Ich glaube, sie haben es etwas verfeinert, aber ich kann keine spezifischen Änderungen leicht finden.

Ich denke, dass E-Mails nur einmal zu erhalten, kein großes Problem ist? Ich schätze, wir müssen testen, was passiert, wenn du deine E-Mail-Adresse in deiner Apple-ID änderst?

3 „Gefällt mir“

Wir sollten weiterhin dieselbe UID erhalten, aber die neue E-Mail-Adresse nicht empfangen. Der Benutzer muss diese manuell in Discourse aktualisieren.

3 „Gefällt mir“

Ich schätze, wir sollten das noch einmal überprüfen, aber ehrlich gesagt sehe ich das nicht als ein riesiges Drama, das uns von der Umsetzung abhält.

Der Anmeldevorgang auf iDevices ist mit der Anmeldung über Apple einfach fantastisch, und dazu erhältst du eine Zwei-Faktor-Authentifizierung mit Face ID.

5 „Gefällt mir“

:+1: werde ich zu meiner Liste hinzufügen, um das Plugin auf den neuesten Stand zu bringen, damit wir es testen können. Wenn es funktioniert, können wir es ziemlich einfach in den Kern integrieren.

13 „Gefällt mir“

Ich habe das Repository an David übergeben, der es nun in Discourse verschoben hat :slight_smile:

Danke, dass du dich darum gekümmert hast.

11 „Gefällt mir“

Ich habe dieses Thema 2-3 Mal gelesen, kann mich aber nicht erinnern, ob ihr versucht habt, die E-Mail-Adresse aus dem bereitgestellten JWT-Token zu extrahieren.

So mache ich es im nativen Code. Ich bin mir nicht sicher, ob die Web-API das zulässt.

Beim ersten Login kann man die E-Mail-Adresse direkt über ASAuthorizationAppleIDCredential.email erhalten.
Bei folgenden Logins kann die E-Mail-Adresse gefunden werden, wenn man die JWT-Daten decodiert und das Feld “email” ausliest.

Mit dem sollte die Funktion also umsetzbar sein, oder?
Die bereitgestellte E-Mail-Adresse wird die sein, die der Nutzer ausgewählt hat – entweder eine persönliche oder eine zufällige.

Ja, das stimmt.

[quote=“Stefan_Brighiu_M, Beitrag: 54, Thema: 122790”]
Bei folgenden Logins kann die E-Mail-Adresse gefunden werden, wenn man die JWT-Daten dekodiert und das Feld „email

4 „Gefällt mir“

Das ist so seltsam, denn auf der nativen Plattform habe ich es einfach mit der JWT-E-Mail-Eigenschaft zum Laufen gebracht.

Wenn sie es im Web nicht ähnlich aktualisieren, besteht die einzige Lösung vielleicht darin, automatisch eine Dummy-E-Mail (automatisch bestätigt) zu generieren und dem Benutzer zu erlauben, sie später zu ändern, falls er möchte.

Das würde bedeuten, sich auf die von Apple bereitgestellte ID zu verlassen, was nicht gerade eine schlechte Lösung ist, aber es stinkt doch ein wenig :slight_smile:.

4 „Gefällt mir“

Es ist durchaus möglich, dass sie Dinge verbessert haben – ich werde das auf jeden Fall noch einmal überprüfen :+1:

6 „Gefällt mir“

Wir wissen, dass wir das zum Laufen bringen können. Was kompliziert wird, ist Folgendes:

  • Deine Apple-ID-E-Mail lautet jane.champion@somewhere.com

  • Du meldest dich bei Discourse mit Apple an

  • Du änderst deine Apple-ID-E-Mail auf jane.row@somewhere.com

  • Du meldest dich bei Discourse an … wir denken immer noch, dass du jane.champion@somewhere.com bist

  • Deine E-Mail-Benachrichtigungen in Discourse werden nun für immer zurückgewiesen.

Uns ist unklar, welcher Prozess bei Änderungen von Apple-ID-E-Mails vorhanden ist und wie wir darauf reagieren können, falls überhaupt.

Mein Vorschlag dazu ist, dass wir diesen Randfall einfach akzeptieren und zumindest die Benutzer die Möglichkeit haben, ihre E-Mail-Adressen in Discourse für solche Randfälle zu ändern.

3 „Gefällt mir“

Ich habe heute getestet, und die gute Nachricht ist, dass Apple das Problem scheinbar behoben hat :smiley: Ich sehe die E-Mail-Adresse bei jeder Authentifizierung.

Es gibt noch ein paar Probleme zu lösen, aber ich hoffe, diese Woche etwas öffentlich machen zu können.

13 „Gefällt mir“

Ich würde sagen, das ist mit Sicherheit ein Kandidat für die Auslieferung mit Discourse. Wir sollten anstreben, den Code in den Kern zu integrieren oder zumindest das Plugin für das nächste Major-Release zu bündeln (auf jeden Fall nicht das nächste Woche though :slight_smile: )

13 „Gefällt mir“

Ja, wir können das später mit minimalem Aufwand vom Plugin in den Kern verlagern. Ein Problem ist, dass es im Vergleich zu Google, Facebook usw. mega-schwer zu konfigurieren ist.

Du benötigst ein (kostenpflichtiges?) Apple-Entwicklerkonto und musst diverse Domainverifizierungen und Zertifikate einrichten. Mit einem guten howto ist das jedoch definitiv machbar.

13 „Gefällt mir“