QuickAuth 1.0.4

QuickAuth 1.0.4

Mirsad Arslanovic维护。



QuickAuth 1.0.4

QuickAuth

QuickAuth是一个为Swift应用程序设计的简单OAuth2身份验证库。它处理所有授权和非授权的网络请求,利用访问和刷新令牌进行身份验证。QuickAuth通过在库侧避免存储敏感信息,而委托给客户端应用程序来强调安全性。重要的是,QuickAuth基于Combine框架构建,为Swift中的异步编程提供了一种现代方法。

功能

  • 自动处理OAuth2身份验证和重新身份验证
  • 支持数据获取和文件下载。
  • 通过应用程序端自定义日志记录
  • 安全令牌处理,不存储库中的敏感信息

安装

快速开始

设置您的QuickAuth

首先,在您的应用程序中初始化QuickAuth,通常在AppDelegate或SceneDelegate中

QuickAuth.shared.setDataSource(dataSource: NetworkManager.shared)
QuickAuth.shared.setDelegate(delegate: NetworkManager.shared)

实现QuickAuthDataSource和QuickAuthDelegate

在您的网络管理器或类似类中实现QuickAuthDatasourceProtocol和QuickAuthDelegate,以处理令牌管理和日志记录

class NetworkManager: QuickAuthDatasourceProtocol, QuickAuthDelegate {
    static let shared = NetworkManager()
    private let tokenService = TokenService()

    func getReauthRequest() throws -> Request {
        // Implement your reauth request
    }

    func getTokenService() -> any QuickAuthAccessServiceProtocol {
        return tokenService
    }

    func log(message: String) {
        // Implement logging
    }
}

发起请求

以下是如何实现IdentityRequest的一个示例。此枚举包括登录、重新身份验证和获取账户详情的情况,展示了如何处理授权和非授权请求。

enum IdentityRequest: Request {
    case login(model: LoginDataModel)
    case reauth(model: RefreshTokenDataModel)
    case myAccount

    var host: String {
        return "https://example.com"
    }

    var path: String {
        switch self {
        case .login:
            return "/auth/o/token/"
        case .reauth:
            return "/auth/o/token/"
        case .myAccount:
            return "/my/account"
        }
    }

    var method: HTTPMethod {
        switch self {
        case .login, .reauth:
            return .post
        case .myAccount:
            return .get
        }
    }

    var headers: HTTPHeaders? {
        // Example: Return nil or specific headers as needed
        return nil
    }

    var body: BodyEncoder? {
        switch self {
        case .login(let model), .reauth(let model):
            return BodyEncoder(value: model)
        case .myAccount:
            return nil
        }
    }

    var contentType: ContentType {
        switch self {
        case .login, .reauth:
            return .formData
        case .myAccount:
            return .json
        }
    }

    var authorized: Bool {
        switch self {
        case .login:
            return false
        case .reauth, .myAccount:
            return true
        }
    }
}

使用execute和download函数来发起API请求。例如,要登录

let loginModel = LoginDataModel(username: "[email protected]", password: "password123")
QuickAuth.shared.execute(IdentityRequest.login(model: loginModel))
    .sink(receiveCompletion: { completion in
        // Handle completion
    }, receiveValue: { response in
        // Handle successful response
    })
    .store(in: &cancellables)

未来文档和示例

我们正在不断改进QuickAuth及其文档。更多详细的指南,包括高级使用、最佳实践和综合示例项目,将在未来添加。这些更新旨在帮助您更好地了解如何无缝地将QuickAuth集成到您的应用程序中,并充分利用其全部功能。