KeyprApi
KeyprApi是对Keypr端点的封装。
- 功能
- 使用方法
- 介绍联合认证 - 理解JWT,入门,检查预订的登入/登出
需求
- iOS 9.0+
安装
Cocoapods
KeyprApi可以通过CocoaPods获得。要安装它,只需将以下行添加到Podfile中:
pod "KeyprApi"
Carthage
要安装它,将以下行添加到Cartfile中:
github "MataDesigns/KeyprApi-iOS"
特性
- 支持身份验证流程
✅ 联邦标识符✅ 自动处理过期的JWT和访问令牌。🚫 OAuth
✅ 获取用户的预订✅ 办理预订的入住/退房✅ 通过标识符查找预订🚫 通过确认码和姓氏查找预订
使用方法
重要!!!当前只支持类(如果你使用结构体,这将不能工作)
简介(联邦)
理解JWT
JWT或JSON Web Token是一种紧凑且自包含的方式,可以像JSON对象一样安全地在各方之间传输信息。由于它是数字签名的,因此信息可以被验证和信赖。
在Keypr的联邦流程中,如果想要使用第三方系统作为身份提供者,则会使用JWT。
Keypr要求用RS256算法对JWT进行签名。
JWT有效负载必须至少包含以下内容
- iss - 该字段标识JWT由哪个系统生成的。公钥与此URI关联。
- exp - 令牌过期时间的数值日期格式。这是一个JSON数值,表示从1970-01-01T00:00:00Z UTC到指定UTC日期/时间秒数的数量,忽略闰秒。
- given_name - 用户的第一个名字
- 姓氏 - 用户的姓氏
- 电子邮件 - 用户的电子邮件地址
关于JWT的更多信息,请在这里了解
开始使用
由于JWT应该在服务器端生成,因此需要一个JWTGenerator构造器参数。当JWT为空或已过期时,将调用生成器,因此这应该总是导致有效的JWT。
Keypr目前有两个环境:测试环境和生产环境。
import KeyprApi
func getJWTFromServer(gotJWT: (String)-> Void)) {
contactYourServerForJWT() { response in
gotJWT(response.jwt)
}
}
...
let api = KeyprApi(jwtGenerator: self.getJWTFromServer, environment: .staging)
办理入住/退房
一站式解决方案
此解决方案会为你异步执行keypr任务,包含超时处理。
例如,调用/async_(check_in或check_out),然后调用task/(从/async调用的taskId)任务,直到成功、失败或超时发生。
let api = KeyprApi(jwtGenerator: self.getJWTFromServer, environment: .staging)
let reservationId = // use api to get reservation
api.perform(task: .checkIn, reservationId: reservationId, timeout: 10) { (successful, task, error) in
print(successful)
}
启动异步任务流程
除非你知道你在做什么,否则请使用上面的“一站式解决方案”
这只会启动入住/退房流程,这不会通知你流程是否成功完成。您需要通过检查(taskId:)函数来确认。
let api = KeyprApi(jwtGenerator: self.getJWTFromServer, environment: .staging)
let reservationId = // use api to get reservation.
api.start(task: .checkIn, reservationId: reservationId) { (task, error) in
print("TaskId: \(task.id)")
}
检查异步任务
除非你知道你在做什么,否则请使用上面的“一站式解决方案”
这用于使用从start(task:)函数获得的taskId检查异步任务。
let taskId = // Some task id.
api.check(taskId: taskId) { (task, error) in
if task.attributes.successful {
print("Woohoo Checked In!!")
}
if task.attributes.failed {
print("Oops something went wrong...")
}
if task.attributes.status == "PENDING" {
// check again
}
}
更多文档即将推出 …
目前请查看测试
作者
尼古拉斯·玛塔,[email protected]
许可协议
KeyprApi 在 MIT 许可协议下可用。有关更多信息,请参阅 LICENSE 文件。