【发布时间】:2017-03-03 00:59:16
【问题描述】:
我正在尝试使用 Apple 的 cloudkit.js 文件与 CloudKit 建立服务器到服务器的连接。然而,尽管搞砸了几个小时的配置,我似乎无法让 CloudKit 认为我的请求有效。
我的配置逻辑非常简单:
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' }
我已经浪费了几个小时来尝试摸索(缩小的)cloudkit.js 文件,但我仍然不知道为什么事情不起作用。任何帮助,即使只是调试想法,将不胜感激。
附:我确定我可以访问 CloudKit 容器,因为当我转到 https://icloud.developer.apple.com/dashboard/ 时,它在 URL https://icloud.developer.apple.com/dashboard/#*myContainerId* 中。
【问题讨论】:
标签: javascript cloudkit