Bibliothek des OAuth-Clients für Swift (iOS/macOS)
\n\nOAuth (Open Authorization) ist ein offenes Autorisierungsprotokoll, das es Anwendungen ermöglicht, eingeschränkten Zugriff auf Benutzerressourcen zu erhalten, ohne deren Login und Passwort zu übertragen. Im Apple-Ökosystem (iOS, macOS, watchOS, tvOS) ist die Implementierung von OAuth 2.0 der Standard für die Integration mit Diensten wie Google, Facebook, GitHub, Twitter und vielen anderen. Für Swift-Entwickler gibt es mehrere bewährte Bibliotheken, die den Authentifizierungsprozess und die Token-Verwaltung vereinfachen.
\n\nIn diesem Artikel betrachten wir eine der beliebtesten und flexibelsten Bibliotheken – OAuthSwift – und besprechen eine Alternative – AppAuth-iOS (von Google empfohlen). Sie erfahren, wie Sie die Bibliothek einbinden, eine Autorisierung durchführen, ein Access-Token, ein Refresh-Token erhalten und diese sicher speichern.
\n\nHauptfunktionen von OAuthSwift
\n\n- \n
- Unterstützung von OAuth 1.0 und OAuth 2.0 \n
- Integrierte Arbeit mit WebView (SFSafariViewController, WKWebView) \n
- Automatisches Abrufen und Aktualisieren von Access-Tokens \n
- Unterstützung verschiedener Grant-Typen (Authorization Code, Implicit, Client Credentials, Resource Owner Password) \n
- Einfache Integration mit Alamofire, URLSession und anderen Netzwerk-Frameworks \n
- Asynchrone Callbacks (Completion Handler) und Unterstützung von Combine (über Erweiterungen) \n
- Sichere Speicherung von Tokens über Keychain \n
Installation von OAuthSwift
\n\nDie Bibliothek wird über Swift Package Manager (SPM) oder CocoaPods installiert. Beispiel für SPM:
\n\n// In Xcode: File → Add Packages...\n// URL: https://github.com/OAuthSwift/OAuthSwift.git\n// Version: ab 2.2.0\n\nOder über Package.swift:
dependencies: [\n .package(url: "https://github.com/OAuthSwift/OAuthSwift.git", from: "2.2.0")\n]\n\nIntegrationsbeispiel mit OAuth 2.0 (Google)
\n\nBetrachten wir ein typisches Szenario – die Autorisierung über Google mit Erhalt eines Access-Tokens. Zuvor muss die Anwendung in der Google Cloud Console registriert werden, um client_id und client_secret zu erhalten.
Schritt 1. Konfiguration des URL-Schemas
\n\nFügen Sie in der Datei Info.plist ein Schema für den Rückruf hinzu:
<key>CFBundleURLTypes</key>\n<array>\n <dict>\n <key>CFBundleURLSchemes</key>\n <array>\n <string>com.googleusercontent.apps.YOUR_CLIENT_ID</string>\n </array>\n </dict>\n</array>\n\nSchritt 2. Autorisierungscode
\n\nimport OAuthSwift\n\nlet oauthswift = OAuth2Swift(\n consumerKey: "YOUR_CLIENT_ID",\n consumerSecret: "YOUR_CLIENT_SECRET",\n authorizeUrl: "https://accounts.google.com/o/oauth2/auth",\n accessTokenUrl: "https://oauth2.googleapis.com/token",\n responseType: "code"\n)\n\n// Speichern einer Referenz auf den ViewController zur Präsentation der WebView\nlet handler = SafariURLHandler(viewController: self, oauthSwift: oauthswift)\noauthswift.authorizeURLHandler = handler\n\nlet state = generateState(withLength: 20)\noauthswift.authorize(\n withCallbackURL: URL(string: "com.googleusercontent.apps.YOUR_CLIENT_ID:/oauth2callback")!,\n scope: "https://www.googleapis.com/auth/userinfo.email",\n state: state,\n parameters: [:]) { result in\n switch result {\n case .success(let (credential, response, parameters)):\n print("Access Token: \\(credential.oauthToken)")\n print("Refresh Token: \\(credential.oauthRefreshToken)")\n // Tokens in der Keychain speichern\n KeychainWrapper.standard.set(credential.oauthToken, forKey: "access_token")\n KeychainWrapper.standard.set(credential.oauthRefreshToken, forKey: "refresh_token")\n case .failure(let error):\n print("Autorisierungsfehler: \\(error.localizedDescription)")\n Auch in der Bibliothek
Arbeiten mit Daten in Java: Überblick über Bibliotheken und Werkzeuge
Autorisierung und Authentifizierung in Swift (iOS/macOS): vollständige Anleitung
Arbeiten mit Daten in Java: Überblick über die Bibliotheken java.time, Joda-Time und Apache Commons
Arbeit mit S3 und Cloud-Speichern in Swift (iOS/macOS): Bibliothek AWSS3
multierr Go: vollständige Anleitung mit Beispielen