Skip to content

Lightweight OAuth 2.0 Client with PKCE (Proof key for Code Exchange: see [RFC 7636](https://tools.ietf.org/html/rfc7636))

License

Notifications You must be signed in to change notification settings

d-date/OAuth2Client

Repository files navigation

MIT License

OAuth2Client

Lightweight OAuth 2.0 Client with PKCE (Proof key for Code Exchange: see RFC 7636)

Usage

Sign in

OAuth2Client().signIn(request: request) 
  .receive(on: yourQueue)
  .sink(receiveCompletion: { (completion) in
    
  }, receiveValue: { (credential) in
    credential.save()
  })

Load Access Token

Credential.load()

Refresh

OAuth2Client().refresh(request: request) 
.receive(on: yourQueue)
.sink(receiveCompletion: { (completion) in

}, receiveValue: { (credential) in
credential.save()
})

Sign Out

Removing cache on WebKit, and showing new auth screen.

OAuth2Client().signOut(request: request) 
  .receive(on: yourQueue)
  .sink(receiveCompletion: { (completion) in

  }, receiveValue: { (credential) in
    credential.save()
  })

Features

  • Supporting OAuth 2.0 with PKCE
  • Publish / refresh access token
  • Combine interface

General notes for OAuth 2.0

  • Make sure setting callback url scheme on your setting

Supported platforms

  • macOS v11.0 and later
  • iOS / iPadOS v14.0 and later

Installation

Only support via Swift package manager installation.

Swift Package Manager

dependencies: [
  .package(url: "https://github.com/d-date/OAuth2Client.git", from: "0.1.0")
]