Middle+
Wie implementiert man die Authentifizierung über Apple in einer iOS-App?
sobes.tech KI
Antwort von AI
Um eine Authentifizierung mit Apple (Anmelden mit Apple) in einer iOS-Anwendung zu implementieren, sind die folgenden Schritte erforderlich:
-
Konfigurieren Sie die Anwendung im Apple Developer Portal:
- Aktivieren Sie die Fähigkeit "Mit Apple anmelden" für Ihre App ID.
- Generieren oder aktualisieren Sie das Provisioning Profile mit aktivierter Fähigkeit.
-
Fügen Sie die Fähigkeit "Mit Apple anmelden" im Xcode-Projekt hinzu.
-
Verwenden Sie das Framework
AuthenticationServices.
Beispielcode zum Starten der Authentifizierungsanfrage:
import AuthenticationServices
@available(iOS 13.0, *)
func performSignInWithApple() {
// Erstellen Sie den Anbieter
let appleIDProvider = ASAuthorizationAppleIDProvider()
// Erstellen Sie Anfragen
let request = appleIDProvider.createRequest()
request.requestedScopes = [.fullName, .email] // Name und E-Mail des Benutzers anfordern
// Erstellen Sie den Controller zur Verarbeitung der Anfragen
let authorizationController = ASAuthorizationController(authorizationRequests: [request])
// Legen Sie Delegierte zur Verarbeitung der Antworten fest
authorizationController.delegate = self
authorizationController.presentationContextProvider = self
// Starten Sie den Authentifizierungsprozess
authorizationController.performRequests()
}
// Implementierung der Delegierten
// ASAuthorizationControllerDelegate
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerDelegate {
// Erfolgreiche Authentifizierung verarbeiten
func authorizationController(controller: ASAuthorizationController, didCompleteWithAuthorization authorization: ASAuthorization) {
if let appleIDCredential = authorization.credential as? ASAuthorizationAppleIDCredential {
let userIdentifier = appleIDCredential.user // Eindeutiger Apple-Benutzerkennung
let fullName = appleIDCredential.fullName // Benutzername
let email = appleIDCredential.email // Benutzer-E-Mail (nur beim ersten Login verfügbar)
// Hier können Sie userIdentifier und andere Daten an Ihren Server zur Verifizierung und Kontenerstellung/-bindung senden
print("User ID: \(userIdentifier)")
print("Full Name: \(fullName?.givenName ?? "") \(fullName?.familyName ?? "")")
print("Email: \(email ?? "")")
} else if let passwordCredential = authorization.credential as? ASPasswordCredential {
// Der Benutzer hat gespeicherte Passwörter aus iCloud Keychain verwendet
let username = passwordCredential.user
let password = passwordCredential.password
// Hier können Sie diese Daten für die Anmeldung verwenden
print("Username: \(username)")
print("Password: \(password)")
}
}
// Fehler bei der Authentifizierung verarbeiten
func authorizationController(controller: ASAuthorizationController, didCompleteWithError error: Error) {
print("Fehler bei der Anmeldung mit Apple: \(error.localizedDescription)")
// Hier Fehler behandeln (z.B. Benutzer hat die Authentifizierung abgebrochen)
}
}
// ASAuthorizationControllerPresentationContextProviding
@available(iOS 13.0, *)
extension YourViewController: ASAuthorizationControllerPresentationContextProviding {
// Gibt das Fenster an, in dem die Authentifizierungsoberfläche angezeigt wird
func presentationAnchor(for controller: ASAuthorizationController) -> ASPresentationAnchor {
return view.window! // Wichtig: KEIN nil-Fenster zurückgeben
}
}
// TODO: Stellen Sie sicher, dass YourViewController die erforderlichen Protokolle implementiert.
- Verarbeiten Sie die nach erfolgreicher Authentifizierung erhaltenen Daten:
- Verwenden Sie
userIdentifier, um den Apple-Benutzer eindeutig zu identifizieren. fullNameundemailsind nur beim ersten Login für diesen Benutzer und Ihre Anwendung verfügbar. Speichern Sie sie.- Senden Sie
userIdentifier,identityToken(enthält Informationen zur Verifizierung auf dem Server) undauthorizationCodean Ihren Server zur Verifizierung und Kontenerstellung/-bindung. - Der Server muss
"identityToken"mit Apple verifizieren, um die Echtheit der Anfrage sicherzustellen.
- Verwenden Sie
Neben der Hauptauthentifizierung ist es auch wichtig:
- Den Authentifizierungsstatus des Benutzers zu verwalten (z.B. mit
ASAuthorizationAppleIDProvider().getCredentialState). - Die Möglichkeit, die Autorisierung durch den Benutzer zu widerrufen.
- Die Interaktion mit Ihrem Backend zur Erstellung/Authentifizierung des Benutzers nach erfolgreicher Apple-Authentifizierung.
Hinweis: Sign In with Apple ist nur auf Geräten mit iOS 13 / macOS Catalina und neueren Versionen verfügbar. Für ältere Versionen ist ein alternativer Authentifizierungsmechanismus erforderlich.