2017-03-03 84 views
0

我试图使用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*中。

回答

0

显然有两个(或更多?)版本的cloudkit.js。因为苹果公司不会像那样用来与全球其他公司一样使用NPM(尽管他们在CloudKit指令中使用它),并且因为服务器到服务器的CloudKit连接的文档是事后才想到的,当你真的想要节点的时候,很容易找到Web版本。并且(除非你是真的善于阅读缩小的代码),没有办法仅仅通过查看就能知道。

事实证明,我不知何故获得了以网络为中心的版本cloudkit.js,我需要基于节点的版本。在我重复列出的过程here后,我获得了该版本,终于能够使我的CloudKit代码正常工作。如果提供你的API库的公司太愚蠢/傲慢/无论如何使用npm像其他人一样,你必须非常小心,不要让自己陷入脚下。确定您正在遵循上面链接的特定于节点的说明。

+1

这帮了我一个类似的问题,因为我不知道CloudKitJS的第二个版本不是升级版,至少这是我在阅读苹果文档链接后想到的。从''切换回'',它解决了我的麻烦。 –

相关问题