Melden Sie sich mit Apple an – implementieren Sie es in Ihre App!

Veröffentlicht: 2020-01-14

Mit Apple anmelden – eine neue Funktion, die Apple letztes Jahr auf der WWDC vorgestellt hat, ist jetzt ab iOS 13 verfügbar. Diese Funktion bietet eine einfache und sichere Kontoregistrierung und Anmeldung in der Anwendung oder Website. Anstatt Registrierungsformulare auszufüllen oder sich über soziale Medien anzumelden, können Sie jetzt ein Konto erstellen und sich mit Ihrer Apple ID anmelden und per Face ID, Touch ID oder Passcode verifizieren.

Eine kurze Beschreibung von Anmelden mit Apple:

  • Schnelle, einfache Kontoeinrichtung und Anmeldung
  • Verifizierte E-Mail-Adressen
  • Eingebaute Sicherheit
  • Betrugsbekämpfung
  • Plattformübergreifend ️
  • iOS 13+

In diesem Artikel werde ich mich auf die grundlegende Implementierung von Sign In With Apple auf iOS-Geräten ohne Integration mit der Webversion oder Integration mit dem Back-End konzentrieren.

Wie funktioniert die Funktion „Mit Apple anmelden“?

Mit Apple anmelden - Benutzeroberfläche

Nach dem Tippen auf „Sign In With Apple“ oder „Continue with Apple“ (es hängt davon ab, welche Schaltfläche in der Anwendung implementiert werden soll) erscheint ein Informationsfenster mit den Möglichkeiten dieser Lösung (zweiter Screenshot). Nachdem wir auf „Weiter“ getippt haben, erhalten wir Informationen darüber, welche Daten mit dem Eigentümer der Anwendung geteilt werden.

Hier haben wir zwei Möglichkeiten, ein Konto in der Anwendung mit „Mit Apple anmelden“ zu registrieren:

  1. Wenn Sie unsere E- Mail-Adresse teilen, wird Ihre echte E-Mail-Adresse mit der Anwendung oder Website geteilt.
  2. Durch das Ausblenden unserer E-Mail-Adresse wird Ihre echte E-Mail-Adresse nicht an die Anwendung oder Website weitergegeben. Apple generiert für Sie eine eindeutige E-Mail mit der Domain @privaterelay.appleid.com. Keine Sorge, alle E-Mails des Besitzers der App werden sowieso an Ihren Posteingang weitergeleitet, da E-Mails an unsere echte E-Mail-Adresse weitergeleitet werden. Der Besitzer der App kennt nur die mit der Apple-Domain generierte E-Mail-Adresse

Nachdem Sie eine der Optionen ausgewählt und auf „Weiter“ getippt haben, verifizieren wir unsere Apple-ID wie beim Entsperren des Telefons, dh per Face ID, Touch ID oder durch Eingabe des Passcodes. An dieser Stelle sollte in der Anwendung / Website ein Konto mit einer eindeutigen Kennung für den Benutzer erstellt werden.

Wenn Sie in der Anwendung zuvor „Mit Apple anmelden“ verwendet haben, können Sie die Details dieser Art der Anmeldung in den Einstellungen anzeigen und die Verwendung dieser Funktion beenden. Gehen Sie dazu zu „Einstellungen“ > „Apple-ID“ > „Passwort & Sicherheit“ > „Apps, die Ihre Apple-ID verwenden“ > „App auswählen“.


Wie implementiert man „Mit Apple anmelden“?

Nachdem wir den theoretischen Teil von „Mit Apple anmelden“ gelesen haben, können wir mit der Implementierung fortfahren

Mit Apple anmelden – erster Schritt der Implementierung

Zunächst müssen Sie „Signing & Capabilities“ in Ihrem Projekt öffnen, dann + drücken und die Funktion „Sign In With Apple“ hinzufügen.

Mit Apple anmelden – ein schrittweiser Implementierungsprozess

Apple hat auf der WWDC-Keynote den Prozess der Implementierung dieser Funktion in vier Phasen unterteilt. Alle Stufen sind unten beschrieben.

1. Taste

Zu Beginn müssen wir unserem Bildschirm eine Schaltfläche hinzufügen. Dies muss die ASAuthorizationAppleIDButton Schaltfläche aus dem AuthenticationService -Framework sein. Es ist in zwei Farben (weiß und schwarz) mit unterschiedlichen Titeln erhältlich. Zu der Schaltfläche müssen wir eine Aktion hinzufügen, die nach dem Antippen aufgerufen werden soll. Die Autorisierungsaktion beschreibe ich im zweiten Punkt.

 Authentifizierungsdienste importieren

let button = ASAuthorizationAppleIDButton (Typ: .signIn, Stil: .white)
button.addTarget(selbst, Aktion: #selector(appleIdButtonClicked), für: .touchUpInside)
stackView.addArrangedSubview(Schaltfläche)

2. Autorisierung️

Hier erstellen wir eine Autorisierungsanfrage, in der requestedScopes im erforderlichen Umfang nur die Informationen bereitstellen, die zum Erstellen eines Kontos in unserer Anwendung oder Website erforderlich sind. In meinem Fall ist dies der vollständige Name und die E-Mail-Adresse. Legen Sie dann den Delegaten fest und stellen Sie die Anfrage.

 @objc func appleIdButtonClicked() {
    let request = ASAuthorizationAppleIDProvider().createRequest()
    request.requestedScopes = [.vollständigerName, .email]

    let controller = ASAuthorizationController(authorizationRequests: [request])
    controller.delegate = selbst
    controller.presentationContextProvider = selbst
    controller.performRequests()
}

3. Überprüfung

Nach einer kurzen Überprüfung per Face ID, Touch ID oder Passcode wird das Autorisierungsergebnis zurückgegeben. Wenn die Autorisierung erfolgreich ist, gibt die Methode didCompleteWithAuthorization ein Objekt vom Typ AppleIdCredential . Dann müssen Sie prüfen, ob es sich um Zugangsdaten vom Typ ASAuthorizationAppleIdCredential – wenn ja, finden wir in diesem Objekt alle notwendigen Daten, um ein Konto in unserem System einzurichten, wie die eindeutige Benutzer-ID, den vollständigen Namen und die E-Mail-Adresse (die der Benutzer zuvor gefragt hatte). An diesem Punkt können wir mit der Erstellung eines Kontos in unserem System fortfahren, indem wir nur die erforderlichen Informationen angeben. Wenn ein Fehler auftritt, wird er in der Methode didCompleteWithError , wo wir diesen Fehler behandeln können.

 func authorisationController(controller: ASAuthorizationController, didCompleteWithAuthorization Autorisierung: ASAuthorization) {
    if let appleIDCredential = authorisation.credential as? ASAuthorizationAppleIDCredential {
        // Erstellen Sie ein Konto in Ihrem System.
    } Else if let passwordCredential = authorization.credential as? ASPasswordCredential {
        // Melden Sie sich mit einem vorhandenen iCloud-Schlüsselbund an.
    }
}

func authorisationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
    Drucken (Fehler)
}

4. Umgang mit Änderungen

Sie müssen darauf vorbereitet sein, dass der Benutzer beispielsweise die Anwendungsanmeldung mit einer Apple-ID nicht mehr verwendet. Dies sollte ordnungsgemäß gehandhabt werden, nachdem der Benutzer die Anwendung neu gestartet hat.

Mit der Benutzer-ID, die wir während der Kontoregistrierung erhalten haben, können wir den aktuellen Status der Apple-ID-Anmeldeinformationen abrufen, indem wir sehr schnell die getCredentialState Methode aufrufen. Diese Methode kann drei Zustände zurückgeben:

  • authorized – ein autorisierter Benutzer, der die Anwendung weiterhin verwenden kann.
  • revoked – Melden Sie den Benutzer ab und Sie können ihn optional zum Anmeldebildschirm führen, um sich erneut anzumelden.
  • notFound – bedeutet, dass der Benutzer „Sign In With Apple“ zuvor nicht verwendet hat. Zeigen Sie dem Benutzer an dieser Stelle auch den Anmeldebildschirm.

Der Methodenaufruf getCredentialState sollte sich in AppDelegate in der Methode didFinishLaunchingWithOptions .

Zusätzlich stellt Apple eine Benachrichtigung bereit, in der es informiert, wenn Anmeldeinformationen widerrufen wurden, und wir müssen es dann in der oben beschriebenen Weise für diesen Status handhaben.

 appleIDProvider.getCredentialState(forUserID: userId) {credentialState, error in
    Berechtigungsstatus wechseln {
    Fall .autorisiert:
        // Die Apple-ID-Berechtigung ist gültig.
    Fall .widerrufen:
        // Die Apple-ID-Anmeldeinformationen werden widerrufen, abmelden.
    Fall .notFound:
        // Es wurden keine Anmeldedaten gefunden, also Anmelde-UI anzeigen.
    Ursprünglich:
        Unterbrechung
    }
}

// Zur Sperrbenachrichtigung anmelden
NotificationCenter.default.addObserver (fürName: NSNotification.Name.ASAuthorizationAppleIDProviderCredentialRevoked, 
                                       Objekt: Null,
                                       Warteschlange: nil) { _ ein
    // Melden Sie den Benutzer ab, leiten Sie ihn optional an, sich erneut anzumelden
}

Nachdem ich alle vier Schritte in meiner Beispielanwendung implementiert habe, funktioniert alles und es sieht so aus:

Anmeldung mit Apple implementiert

Muss ich „Mit Apple anmelden“ zu meiner App hinzufügen?

Wenn Ihre Anwendung eine Drittanbieter-Anmeldemethode wie Facebook, Google oder LinkedIn verwendet, müssen Sie gemäß den neuen Richtlinien auch „Mit Apple anmelden“ hinzufügen. Wenn Sie es nicht hinzufügen, wird Ihr Antrag möglicherweise abgelehnt und nicht von Apple überprüft. Nachfolgend finden Sie einen Link zu den Nachrichten und ein Zitat aus den Richtlinien.

Neue Richtlinien für die Anmeldung mit Apple – 12. September 2019 ️

Ab heute müssen neue Apps, die beim App Store eingereicht werden, diesen Richtlinien entsprechen. Bestehende Apps und App-Updates müssen ihnen bis April 2020 folgen.


Nachfolgend finden Sie Anwendungen, die das Anmelden mit der neuen Funktion von Apple anbieten. Natürlich gibt es jeden Tag mehr davon

Beispiele für Apps, die die Funktion „Mit Apple anmelden“ verwenden

Sie können das gesamte Projekt hier auf meinem GitHub überprüfen.

Quellen:

  • https://developer.apple.com/videos/play/wwdc2019/706/
  • https://developer.apple.com/videos/play/wwdc2019/516
  • https://developer.apple.com/sign-in-with-apple/get-started/
  • https://developer.apple.com/news/?id=09122019b
  • https://developer.apple.com/app-store/review/guidelines/#sign-in-with-apple