Contents

aporat/APWebAuthentication

A Swift framework for in-app OAuth authentication across popular social platforms like Twitter, Reddit, Pinterest, and GitHub

✨ Features

  • πŸ” OAuth1 + OAuth2 support
  • 🌐 Safari-style login UI via WKWebView
  • πŸͺ Cookie/session handling
  • πŸ” Smart retry & rate-limit UI
  • 🧠 Customizable user-agent
  • πŸ’¬ Built-in models for Reddit, Pinterest, Twitter, GitHub

πŸš€ Supported Providers

  • Twitter
  • Reddit
  • Pinterest
  • GitHub

Extendable via OAuth1Client / OAuth2Client.


πŸ“¦ Installation

Swift Package Manager

dependencies: [
    .package(url: "https://github.com/aporat/APWebAuthentication.git", from: "1.0.0")
]

πŸ§‘β€πŸ’» Usage

let auth = Auth2Authentication()
auth.accountIdentifier = "github"

let client = GitHubAPIClient(auth: auth)

let session = APWebAuthSession(accountType: AccountStore.github) { result in
    switch result {
    case .success(let params):
        print("Access token:", params?["access_token"] ?? "")
    case .failure(let error):
        print("Auth failed:", error.localizedDescription)
    }
}

session.presentationContextProvider = self
session.start(url: loginURL, callbackURL: redirectURL)

πŸ›  Architecture

  • APWebAuthSession – UI + login flow
  • OAuth1Client, OAuth2Client – Auth-aware clients
  • AuthClientRequestRetrier – Retry logic & UI
  • BaseUser, MediaItem – Common model interfaces
  • WebAuthViewController, WebTokenInterceptorViewController – Web UI

πŸ§ͺ Testing

Run:

swift test

Includes tests for:

  • Token adapters & clients
  • User & post parsing
  • Rate-limit retry logic

πŸ“„ License

MIT


πŸ‘€ Author

Built by Aporat β€’ PRs welcome!

Package Metadata

Repository: aporat/APWebAuthentication

Stars: 3

Forks: 1

Open issues: 0

Default branch: main

Primary language: swift

License: MIT

README: README.md