Cliente OAuth para Swift (iOS/macOS): biblioteca OAuthSwift

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Cliente OAuth para Swift (iOS/macOS): biblioteca OAuthSwift



OAuthSwift es una biblioteca potente y flexible para implementar los protocolos OAuth 1.0 y OAuth 2.0 en aplicaciones Swift para iOS, macOS, watchOS y tvOS. Proporciona a los desarrolladores una interfaz simple e intuitiva para integrar servicios de terceros (Google, GitHub, Facebook, Twitter y otros) sin necesidad de manejar manualmente solicitudes HTTP complejas, redirecciones e intercambio de tokens. La biblioteca está completamente escrita en Swift, es compatible con las versiones modernas del lenguaje (Swift 5+) y cuenta con el apoyo activo de la comunidad.



La principal ventaja de OAuthSwift es la minimización del código repetitivo (boilerplate). El desarrollador solo necesita especificar el ID de cliente (client ID), la clave secreta (client secret), las URL de autorización y redirección, y la biblioteca gestiona por sí misma el proceso de obtención del token de acceso. OAuthSwift es compatible con todos los tipos de concesión comunes de OAuth 2.0: Authorization Code, Implicit, Client Credentials y Resource Owner Password Credentials. Para OAuth 1.0, se implementa soporte completo para los métodos de firma HMAC-SHA1, RSA-SHA1 y Plaintext.



Instalación y configuración

La biblioteca se distribuye a través de Swift Package Manager (SPM), CocoaPods y Carthage. El método recomendado es SPM:

// En Xcode: File → Swift Packages → Add Package Dependency// URL: https://github.com/OAuthSwift/OAuthSwift.git// Versión: desde 2.2.0 en adelante

Importación en el código:

import OAuthSwift


Implementación básica de OAuth 2.0 (ejemplo con Google)

Consideremos un ejemplo completo de autorización a través de Google utilizando el flujo Authorization Code. Previamente, es necesario crear un proyecto en Google Cloud Console, obtener un client ID y configurar una URI de redirección (por ejemplo, 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" )

// Configuración de los parámetros de la solicitud let state = generateState(withLength: 20) let scope = "https://www.googleapis.com/auth/userinfo.profile"

// Inicio de la autorización 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("Error de autorización: \\(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("Error al obtener datos: \\(error)") } } }}


Manejo del esquema de URL (iOS)

Para el correcto funcionamiento de la URL de callback, es necesario configurar AppDelegate o SceneDelegate:

// AppDelegate.swiftfunc applic                    

Recommendations