Client OAuth pour Swift (iOS/macOS) : bibliothèque OAuthSwift
OAuthSwift est une bibliothèque puissante et flexible pour implémenter les protocoles OAuth 1.0 et OAuth 2.0 dans les applications Swift pour iOS, macOS, watchOS et tvOS. Elle offre aux développeurs une interface simple et intuitive pour intégrer des services tiers (Google, GitHub, Facebook, Twitter, etc.) sans avoir à gérer manuellement les requêtes HTTP complexes, les redirections et les échanges de jetons. La bibliothèque est entièrement écrite en Swift, prend en charge les versions modernes du langage (Swift 5+) et est activement maintenue par la communauté.
Le principal avantage d'OAuthSwift est la minimisation du code boilerplate. Le développeur a simplement besoin de fournir l'identifiant client (client ID), la clé secrète (client secret), les URL d'autorisation et de redirection, et la bibliothèque gère elle-même le processus d'obtention du jeton d'accès. OAuthSwift prend en charge tous les types de subventions OAuth 2.0 courants : Authorization Code, Implicit, Client Credentials et Resource Owner Password Credentials. Pour OAuth 1.0, une prise en charge complète des méthodes de signature HMAC-SHA1, RSA-SHA1 et Plaintext est implémentée.
Installation et intégration
La bibliothèque est distribuée via Swift Package Manager (SPM), CocoaPods et Carthage. La méthode recommandée est SPM :
// Dans Xcode : File → Swift Packages → Add Package Dependency// URL : https://github.com/OAuthSwift/OAuthSwift.git// Version : à partir de 2.2.0 et supérieureImportation dans le code :
import OAuthSwiftImplémentation de base d'OAuth 2.0 (exemple avec Google)
Considérons un exemple complet d'authentification via Google en utilisant le flux Authorization Code. Au préalable, il est nécessaire de créer un projet dans Google Cloud Console, d'obtenir un client ID et de configurer un URI de redirection (par exemple, 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" )
// Configuration des paramètres de requête let state = generateState(withLength: 20) let scope = "https://www.googleapis.com/auth/userinfo.profile"
// Lancement de l'authentification 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("Erreur d'authentification : \\(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("Nom : \\(json["name"] ?? "")") } case .failure(let error): print("Erreur lors de la récupération des données : \\(error)") } } }}Gestion du schéma d'URL (iOS)
Pour le bon fonctionnement de l'URL de rappel, il est nécessaire de configurer AppDelegate ou SceneDelegate :
// AppDelegate.swiftfunc applic Aussi dans la bibliothèque
Générateur de QR codes en Java : bibliothèque ZXing (Zebra Crossing)
Jetons JWT en JavaScript (Node.js) : Guide complet
Sérialisation des objets en Java : guide complet avec exemples
Inversify TypeScript : guide complet avec exemples pratiques
Générateur de QR codes en Kotlin : bibliothèque ZXing et conseils d'implémentation