我正在尝试使用 CloudKit API 从我的服务器创建公共数据库中的记录,使用服务器到服务器的密钥。我正在使用以下 shell 脚本来生成 curl 命令。当我运行它时,Apple 的响应只是说存在内部错误。
{“uuid”:“a6415feb-168b-4615-9577-10c5168d7d7c”,“serverErrorCode”:“INTERNAL_ERROR”}
这是我正在使用的脚本:
#!/bin/sh
subpath=/database/1/iCloud.com.mycompany.myapp/development/public/records/modify
date=`date -u +"%Y-%m-%dT%H:%M:%SZ"`
body='
{
"operations": [
{
"operationType": "forceReplace",
"record": {
"recordType": "Drawing",
"fields": {
"date": "2021-01-09T12:00:00Z",
"numbers": [14, 26, 38, 45, 46, 13],
"type": 1
}
},
"recordName": "powerball20210109"
}
],
"atomic": true
}
'
encoded=`echo $body | base64`
signature="$date:$encoded:$subpath"
curl -X POST https://api.apple-cloudkit.com$subpath \
-H 'Content-Type: application/json' \
-H 'X-Apple-Cloudkit-Request-KeyID: myKeyHere' \
-H "X-Apple-CloudKit-Request-ISO8601Date: $date" \
-H "X-Apple-CloudKit-Request-SignatureV1: $signature" \
-d "$body"
CloudKit 架构将绘图显示为具有三个属性的自定义类型:
- 日期是日期/时间
- 数字是一个 Int(64) (列表)
- 类型是 Int(64)