OAuth-Client für Swift (iOS/macOS): Bibliothek OAuthSwift
OAuthSwift ist eine leistungsstarke und flexible Bibliothek zur Implementierung des OAuth 1.0- und OAuth 2.0-Protokolls in Swift-Apps für iOS, macOS, watchOS und tvOS. Sie bietet Entwicklern eine einfache und intuitive Schnittstelle zur Integration von Drittanbieterdiensten (Google, GitHub, Facebook, Twitter und andere), ohne komplexe HTTP-Anfragen, Weiterleitungen und Token-Austausch manuell verarbeiten zu müssen. Die Bibliothek ist vollständig in Swift geschrieben, unterstützt moderne Sprachversionen (Swift 5+) und wird aktiv von der Community gepflegt.
Der Hauptvorteil von OAuthSwift ist die Minimierung von Boilerplate-Code. Der Entwickler muss lediglich die Client-ID, den geheimen Schlüssel (Client Secret), die Autorisierungs- und Weiterleitungs-URLs angeben, und die Bibliothek verwaltet den Prozess der Access-Token-Gewinnung selbst. OAuthSwift unterstützt alle gängigen OAuth 2.0-Grants: Authorization Code, Implicit, Client Credentials und Resource Owner Password Credentials. Für OAuth 1.0 wird die vollständige Unterstützung der Signaturmethoden HMAC-SHA1, RSA-SHA1 und Plaintext bereitgestellt.
Installation und Einbindung
Die Bibliothek wird über Swift Package Manager (SPM), CocoaPods und Carthage verteilt. Die empfohlene Methode ist SPM:
// In Xcode: File → Swift Packages → Add Package Dependency// URL: https://github.com/OAuthSwift/OAuthSwift.git// Version: ab 2.2.0Import in den Code:
import OAuthSwiftBasisimplementierung von OAuth 2.0 (am Beispiel Google)
Betrachten wir ein vollständiges Beispiel für die Autorisierung über Google mit dem Authorization Code Flow. Zuvor muss ein Projekt in der Google Cloud Console erstellt, eine Client-ID abgerufen und eine Redirect-URI konfiguriert werden (z. B. com.example.app:/oauth-callback).
class GoogleAuthManager { private var oauthSwift: OAuth2Swift?
func startGoogleAuth() { oauthSwift = OAuth2Swift( consumerKey: "YOUR_CLIENT_ID", consumerSecret: "YOUR_CLIENT_SECRET", authorizeUrl: "https://accounts.google.com/o/oauth2/auth", accessTokenUrl: "https://oauth2.googleapis.com/token", responseType: "code" )
// Konfiguration der Anfrageparameter let state = generateState(withLength: 20) let scope = "https://www.googleapis.com/auth/userinfo.profile"
// Autorisierung starten oauthSwift?.authorize( withCallbackURL: URL(string: "com.example.app:/oauth-callback")!, scope: scope, state: state, parameters: [:], headers: nil ) { result in switch result { case .success(let (credential, response, parameters)): print("Access Token: \\(credential.oauthToken)") print("Refresh Token: \\(credential.oauthRefreshToken)") self.fetchUserInfo(credential: credential) case .failure(let error): print("Autorisierungsfehler: \\(error.localizedDescription)") } } }
private func fetchUserInfo(credential: OAuthSwiftCredential) { let url = "https://www.googleapis.com/oauth2/v2/userinfo" oauthSwift?.client.get(url, parameters: [:]) { result in switch result { case .success(let response): if let json = try? JSONSerialization.jsonObject(with: response.data) as? [String: Any] { print("Email: \\(json["email"] ?? "")") print("Name: \\(json["name"] ?? "")") } case .failure(let error): print("Fehler beim Abrufen der Daten: \\(error)") } } }}Verarbeitung des URL-Schemas (iOS)
Für die korrekte Funktion der Callback-URL muss AppDelegate oder SceneDelegate konfiguriert werden:
// AppDelegate.swiftfunc applic Auch in der Bibliothek
OAuth-Client für Go (Golang): Vollständiger Leitfaden zur Bibliothek
Mikro-ORM für TypeScript: Komplettes Tutorial mit Beispielen
CoreBluetooth für Swift: Vollständiges BLE-Guide mit Beispielen