PassportKit

用于快速简便的 OAuth 身份验证的 Swift 库。

使用 Cocoapods 安装

pod 'PassportKit'

使用 Swift Package Manager 安装

快速开始

首先创建一个 PassportConfiguration,这将为请求提供除了电子邮件和密码之外所需的所有参数。

func setupPassport() {
    guard let baseURL = URL(string: "https://google.com") else { return nil }
    let configuration = PassportConfiguration(baseURL: baseURL, mode: .standard(clientID: "1", clientSecret: "awdoncoin12onaoinaoinda9"), keychainID: "PassportTest")
    PassportKit.shared.setup(configuration)
}

然后您需要设置一个 view model 来传递给身份验证函数,此 view model 由电子邮件和密码组成。 这些值可以使用字符串或文本字段作为参数来设置。

func setupViewModel() -> PassportViewModel {
    let model = PassportViewModel(delegate: self)
    model.setEmail(string: "test@test.com")
    model.setPassword(string: "secret123")
    
    return model
}

一旦您有了 PassportViewModel,您就可以调用身份验证方法,将模型作为参数传递。 这将发送一个网络请求,如果失败,将通过完成处理程序返回一个错误。

PassportKit.shared.authenticate(model) { error in
    if let error = error {
        print(error.localizedDescription)
    } else {
        guard let token = passport?.authToken else { return }
        print("Token: \(token)")
    }
}

正如您在上面的 success 函数中看到的那样,PassportKit 附带了一个 PassportKitAuthenticationManager 类,该类使用钥匙串来安全地存储您的身份验证令牌,使用的钥匙串 ID 是您在 PassportConfiguration 中开始时设置的。

Laravel Sanctum 支持

PassportKit 现在支持 Laravel Sanctum,完全以相同的方式使用 passport kit,但在设置时,使用 sanctum 模式(这将不再需要 client id 或 secret)。

func setupPassport() {
    guard let baseURL = URL(string: "https://google.com") else { return nil }
    let configuration = PassportConfiguration(baseURL: baseURL, mode: .sanctume, keychainID: "PassportTest")
    PassportKit.shared.setup(configuration)
}

请注意,当在 sactum 模式下使用 PassportKit 时,刷新函数和在AuthenticationManager类中找到的刷新令牌不再可用。