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

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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



OAuthSwift é uma biblioteca poderosa e flexível para implementar os protocolos OAuth 1.0 e OAuth 2.0 em aplicativos Swift para iOS, macOS, watchOS e tvOS. Ela fornece aos desenvolvedores uma interface simples e intuitiva para integrar serviços de terceiros (Google, GitHub, Facebook, Twitter e outros) sem a necessidade de processar manualmente requisições HTTP complexas, redirecionamentos e troca de tokens. A biblioteca é totalmente escrita em Swift, suporta versões modernas da linguagem (Swift 5+) e é ativamente mantida pela comunidade.



A principal vantagem do OAuthSwift é a minimização do código boilerplate. O desenvolvedor precisa apenas informar o identificador do cliente (client ID), a chave secreta (client secret), as URLs de autorização e redirecionamento, e a biblioteca gerencia todo o processo de obtenção do access token. OAuthSwift suporta todos os grants comuns do OAuth 2.0: Authorization Code, Implicit, Client Credentials e Resource Owner Password Credentials. Para OAuth 1.0, há suporte completo aos métodos de assinatura HMAC-SHA1, RSA-SHA1 e Plaintext.



Instalação e configuração

A biblioteca é distribuída via Swift Package Manager (SPM), CocoaPods e Carthage. O método recomendado é o SPM:

// No Xcode: File → Swift Packages → Add Package Dependency// URL: https://github.com/OAuthSwift/OAuthSwift.git// Versão: 2.2.0 ou superior

Importação no código:

import OAuthSwift


Implementação básica do OAuth 2.0 (exemplo com Google)

Vamos considerar um exemplo completo de autorização via Google usando o Authorization Code Flow. Primeiro, é necessário criar um projeto no Google Cloud Console, obter o client ID e configurar a redirect URI (por exemplo, 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" )

// Configuração dos parâmetros da requisição let state = generateState(withLength: 20) let scope = "https://www.googleapis.com/auth/userinfo.profile"

// Iniciar autorização 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("Erro de autorização: \\(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("Erro ao obter dados: \\(error)") } } }}


Tratamento da URL scheme (iOS)

Para o funcionamento correto da callback-URL, é necessário configurar o AppDelegate ou SceneDelegate:

// AppDelegate.swiftfunc applic                    

Recommendations