gpt4 book ai didi

javascript - 无法让 CloudKit 进行身份验证(使用 Javascript 和服务器到服务器 key )

转载 作者:行者123 更新时间:2023-11-29 21:09:05 28 4
gpt4 key购买 nike

我正在尝试使用 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" .

我什至尝试添加 console.log内线cloudkit.js本身记录发送到 CloudKit 的内容,并且它似乎具有正确的 header :

_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* .

最佳答案

显然 cloudkit.js 有两个(或更多?)版本。因为 Apple 特意像地球上所有其他公司一样使用 NPM(即使他们在 CloudKit 说明中使用它),并且因为服务器到服务器 CloudKit 连接的文档是有点事后的想法,当你真的想要 Node 时,很容易结束网络版本。而且(除非您真的擅长阅读精简代码)仅通过查看是无法判断的。

事实证明,我以某种方式获得了 cloudkit.js 的 web 版,我需要 Node 版。在我重复列出的过程后 here我得到了那个版本,终于能够让我的 CloudKit 代码正常工作。

这个故事的寓意:如果提供您的 API 库的公司太愚蠢/傲慢/不管怎样,无法像其他人一样使用 npm,您必须非常小心,不要搬起石头砸自己的脚。确保您遵循上面链接的特定于节点的说明。

关于javascript - 无法让 CloudKit 进行身份验证(使用 Javascript 和服务器到服务器 key ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42568772/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com