Client OAuth pour Swift (iOS/macOS) : bibliothèque OAuthSwift

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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érieure

Importation dans le code :

import OAuthSwift


Implé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                    

Recommendations