我最近一直在探索CloudKit和相关框架。我与我的应用程序以及使用CloudKitJS的网站进行了沟通。我所面临的困难是服务器到服务器的通信(我需要在csv中从公共数据库导出数据)
我尝试了其他人建议的Python包requests-cloudkit。我创建了一个服务器到服务器令牌,并且在创建eckey.pem文件后只复制了开始行和结束行之间的密钥。然后我得到了以下代码:
from requests_cloudkit import CloudKitAuth
from restmapper import restmapper
import json
KEY_ID = '[my key ID from CK Dashboard]'
SECRET_FILE_KEY = 'eckey.pem'
AUTH = CloudKitAuth(KEY_ID, SECRET_FILE_KEY)
PARAMS = {
'query':{
'recordType': '[my record type]'
},
}
CloudKit = restmapper.RestMapper("https://api.apple-cloudkit.com/database/1/[my container]/development/")
cloudkit = CloudKit(auth=AUTH)
response = cloudkit.POST.public.records.query(json.dumps(PARAMS))
然后,我收到了401身份验证失败的响应。我已经被困在这个问题上好几天了,所以如果有任何帮助或建议,我将不胜感激。😊
创建服务器到服务器的密钥是重要的第一步,但为了在这之后发出HTTP请求,必须对每个请求进行签名
查找this documentation page底部附近的验证Web服务请求部分
这有点复杂,但您必须小心地构造签名头,以包含在您发出的每个请求中。我不熟悉如何在Python中实现这一点,但下面是我在NodeJS中实现这一点的方法,这可能会有所帮助:
一开始这有点毛茸茸的,但我只是把所有这些东西放在一个函数中,每当我需要发出请求时,我都会重用这个函数
苹果的文档几乎已经被抛弃,现在很难在CloudKit Web服务上找到好的帮助
相关问题 更多 >
编程相关推荐