我试图使用Apple的cloudkit.js
文件与CloudKit建立服务器到服务器的连接。但是,尽管配置好几个小时,但我似乎无法让CloudKit认为我的请求有效。无法获取CloudKit进行身份验证(使用Javascript和服务器到服务器密钥)
我的配置逻辑是非常简单的:
const privateKeyFile = `${__dirname}/eckey.pem`;
const keyID = '*some key ID*';
const config = {
containers: [
{
containerIdentifier: 'iCloud.com.*someNameSpace.someProject*',
environment: 'development',
serverToServerKeyAuth: { keyID, privateKeyFile },
},
],
services: {
fetch,
},
};
CloudKit.configure(config);
const container = CloudKit.getDefaultContainer();
container.setUpAuth();
然而,最终container.setUpAuth();
总会导致{"uuid":"*some UUID*","serverErrorCode":"AUTHENTICATION_FAILED","reason":"no auth method found"
。
我甚至尝试添加内cloudkit.js
本身console.log
行记录的内容被发送到CloudKit,和它似乎有正确的头:
_host: 'https://api.apple-cloudkit.com',
_path: '',
_params: { ckjsBuildVersion: '17AProjectDev77', ckjsVersion: '1.2.0' },
_headers:
{ 'content-type': 'text/plain',
'X-Apple-CloudKit-Request-ISO8601Date': '2017-03-03T00:52:48Z',
'X-Apple-CloudKit-Request-KeyID': '*my key*',
'X-Apple-CloudKit-Request-SignatureV1': '*what looks like a valid signature*' },
_body: undefined,
_method: 'GET',
_wsApiVersion: 1,
_containerIdentifier: '*my container identifier*',
_containerEnvironment: 'development',
_databaseName: 'public',
_apiModuleName: 'database',
_responseClass: [Function: a],
_apiEntityName: 'users',
_apiAction: 'current' }
我已经失去了小时试图神交(minnified)cloudkit.js
文件,我仍然不知道为什么事情不起作用。任何帮助,甚至只是调试想法,将不胜感激。
P.S.我确定我可以访问CloudKit容器,因为当我访问https://icloud.developer.apple.com/dashboard/
时,它在URL https://icloud.developer.apple.com/dashboard/#*myContainerId*
中。
这帮了我一个类似的问题,因为我不知道CloudKitJS的第二个版本不是升级版,至少这是我在阅读苹果文档链接后想到的。从''切换回'',它解决了我的麻烦。 –