用于快速简便的 OAuth 身份验证的 Swift 库。
使用 Cocoapods 安装
pod 'PassportKit'
使用 Swift Package Manager 安装
File->Swift Packages->Add Package Dependency
快速开始
首先创建一个 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
类中找到的刷新令牌不再可用。