版本记录
版本号 | 时间 |
---|---|
V1.0 | 2018.01.23 |
前言
今年翻阅苹果的API文档,发现多了一个框架就是DeviceCheck,想了半天也感觉我没见过他,看了下果不其然,是iOS 11.0新加入进来的,既然来了就相互了解下吧,下面就让我们一起来了解他。感兴趣的可以参考上面的文章。
1. DeviceCheck框架详细解析 (一) —— 基本概览
Overview
使用DeviceCheck API
生成标识设备的短暂标记后,服务器将使用HTTP POST命令将请求发送到查询和更新终端。 每个请求中的HTTP头字段必须包含从JSON Web令牌(JWT)中从Apple接收到的身份验证密钥。 要创建此token,可以使用与Apple推送通知服务(APN)创建提供者身份验证令牌相同的步骤; 有关详细信息,请参阅Communicate with APNs using authentication tokens
Create the Payload for a Query Request - 为查询请求创建有效负载
要查询这些位,您将创建一个JSON有效负载,其中包含下表中列出的字段。
以下是查询请求中包含的有效负载示例:
// Listing 1
{
"device_token" : "wlkCDA2Hy/CfrMqVAShs1BAR/0sAiuRIUm5jQg0a..."
"transaction_id" : "5b737ca6-a4c7-488e-b928-8452960c4be9",
"timestamp" : 1487716472000
}
当您的查询请求成功时,您会收到一个响应,其中包含下表中列出的字段。
Create the Payload for an Update Request - 为更新请求创建有效负载
要更新这些位,请创建一个包含下表中列出的字段的JSON有效内容。
以下是更新请求中包含的有效内容示例:
// Listing 2
{
"device_token" : "wlkCDA2Hy/CfrMqVAShs1BAR/0sAiuRIUm5jQg0a..."
"transaction_id" : "5b737ca6-a4c7-488e-b928-8452960c4be9",
"timestamp" : 1487716472000,
"bit0" : true,
"bit1" : false
}
如果更新成功,您将收到HTTP响应代码200,有关可以接收的响应代码的完整列表,请参阅Understand the HTTP Response Codes。
Create the Payload for a Device Validation Request - 为设备验证请求创建有效负载
要验证设备,请创建一个包含下表中列出的字段的JSON有效内容。
以下是设备验证请求中包含的有效内容示例:
// Listing 3
{
"device_token" : "wlkCDA2Hy/CfMqVAShslBAR/0sAiuRIUm5jQg0aJJ2gZl1cs..."
"transaction_id" : "5b737ca6-a4c7-488e-b928-8452960c4be9",
"timestamp" : 1487716472000
}
如果请求成功,您将收到HTTP响应代码200,有关可以接收的响应代码的完整列表,请参阅Understand the HTTP Response Codes。
Send the Request - 发送请求
发送给查询和更新终端的每个请求都必须包含一个包含验证密钥的授权标头。 身份验证密钥必须使用ES256算法,并且采用Base 64 URL编码的JSON Web令牌格式。 如果您的令牌不使用此格式,您会收到一个BAD_AUTHENTICATION_TOKEN HTTP
错误。
在您创建的用于发送请求的curl
命令中,指定授权标头并使用Bearer \
包含您的验证密钥,如下所示:
-H "Authorization: Bearer <GeneratedJWT>" \
重要:使用示例
curl
命令(即https://api.development.devicecheck.apple.com
)中显示的基本URL,仅用于开发过程中的测试。 当您准备转换到生产环境时,您必须使用这个https://api.devicecheck.apple.com
作为Base URL进行生产。
要发送一个查询请求,你的curl
命令可能看起来类似于这里显示的那个:
// Listing 4
curl -i --verbose -H "Authorization: Bearer <GeneratedJWT>" \ -X POST --data-binary @ValidQueryRequest.json \
https://api.development.devicecheck.apple.com/v1/query_two_bits
要发送更新请求,您的curl
命令可能看起来与此处显示的类似:
// Listing 5
curl -i --verbose -H "Authorization: Bearer <GeneratedJWT>" \ -X POST --data-binary @ValidUpdateRequest.json \ https://api.development.devicecheck.apple.com/v1/update_two_bits
要发送设备验证请求,您的curl
命令可能看起来与此处显示的类似:
// Listing 6
curl -i --verbose -H "Authorization: Bearer <GeneratedJWT>" \ -X POST --data-binary @ValidValidateDeviceToken Request.json \ https://api.development.devicecheck.apple.com/v1/validate_device_token
Understand the HTTP Response Codes - 了解HTTP响应代码
当您使用查询和更新端点与服务器进行通信时,您可能会收到下表中列出的响应代码之一。
后记
本篇已结束,后面更精彩~~~