问题标签 [cloudkit-web-services]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
266 浏览

javascript - 用户成功通过 iCloud 帐户进行身份验证后,如何保持登录会话?

这就是我在加载网站时所说的:

当我成功登录时,会出现正确的按钮:

在此处输入图像描述

但是每次刷新页面时,此按钮都会更改:

在此处输入图像描述

在用户手动注销之前如何保持会话和获取记录的可能性?

如何检查是否存在当前会话(用户已经通过身份验证)并使用它?

0 投票
1 回答
241 浏览

cloudkit - 如何查看保存在 CloudKit Dashboard 中的值?

所以我能够在仪表板中保存数据,但我只能看到 Cloudkit 仪表板中的键。我如何真正看到键的值?

在此处输入图像描述

这是我的代码:

在此处输入图像描述

0 投票
2 回答
215 浏览

cloudkit - ckWebAuthToken 使用 CloudKit Web 服务通过 postMessage 检索

我正在尝试使用他们的 Web 服务和 postMessage API 令牌检索 CloudKit 的 Web 身份验证令牌。根据Apple 的文档,令牌应该作为“数据”对象的一部分通过消息回调返回,但我得到的只是 ckSession 变量。似乎文档有误,或者我遗漏了一些东西。

在此步骤之后是否应该调用任何其他 API 来检索 Web 身份验证令牌?我试着天真并通过 ckSession 来记录列表 API,但这似乎不起作用。此外,如果我使用不同的令牌检索方法,例如自定义 URL 方案,则可以正确检索令牌。这个问题似乎只与 postMessage 选项有关。

“允许的来源”设置为“所有域”,我从 localhost 调用 auth API。我正在运行 Windows 10 并且正在使用 Chrome 浏览器(如果它在这里意味着什么,可能不是)。

几年前好像有人遇到过同样的问题,并且在 Apple 论坛上发布过,但当时并没有太多的爱。

任何帮助将不胜感激。另外,如果需要,我可以提供更多信息。

0 投票
1 回答
88 浏览

cloudkit - CloudKit:Web 服务应用程序的适当安全角色

我有一个服务器端应用程序,它使用 CloudKit Web 服务来更改我的 CloudKit 容器。我为此生成了一个服务器到服务器的密钥。

我希望我的服务器端脚本能够更新Person我的公共数据库中的任何类型的记录,但是我收到了一个错误:

[原因] => 不允许写操作

[serverErrorCode] => ACCESS_DENIED

我记录的安全角色选项Person如下:

CloudKit 安全角色

如果我检查Write那么它可以工作并且我不再收到错误。

但我担心我只是让我的应用程序的所有用户都可以更改该表中的任何记录。有没有办法允许对我的应用程序及其服务器到服务器密钥进行写访问?

0 投票
2 回答
247 浏览

vue.js - 将 CloudKit JS 添加到 Vue 项目

我正在尝试将 CloudKit JS 添加到一个新的 Vue 项目中。理想情况下,我可以从我的应用程序中的任何组件访问 CloudKit 的功能。我是 Vue 的新手,所以请放轻松。:)

到目前为止,我已经尝试将以下内容放入main.js

这给了我 cloudkit.js 中的脚本错误:

TypeError:无法读取未定义的属性“ArrayBuffer”

所以然后我读了这个 SO 帖子并尝试了这个App.vue

然后我可以配置 CloudKit 并在里面使用它App.vue,但是我不清楚如何在我的所有组件中使用 CloudKit,而不像在mounted()上面的函数中那样重新定义它。

如何导入 CloudKit 并使其在全球的 Vue 应用程序中可用?

0 投票
1 回答
369 浏览

ios - iCloud Cloudkit CKFetchWebAuthTokenOperation

我的 iOS 应用程序检查 iCloud 帐户状态,然后使用以下方法请求 iCloud WebToken:

一切正常,并返回格式正确的 Web 令牌。

然后,我获取该 Web 令牌,并使用 Postman 形成请求(删除了确切的值):

回应是:

如果我改为请求公共数据库,我会得到有效且正确的响应:

所以,这里有两个问题。

1)如果我在代码中为私有数据库请求 Web 令牌,为什么它只允许我与公共数据库交互?感觉就像它提供了一个仅对公共数据库有效的 Web 令牌,而不管我将操作添加到哪个数据库。

2)像这样针对公共数据库验证用户的安全隐患是什么?令牌应在 30 分钟内过期,这在这方面有所帮助。

为了证明 Web 令牌对私有数据库有效,我在 Dashboard 中更新了“登录回调”,复制了生成的 ckWebAuthToken 并能够通过 PostMan 访问私有数据库,因此这没有问题。似乎问题完全在于从 iOS 代码返回的 Web 令牌。

0 投票
3 回答
3407 浏览

cloudkit - 使用 CloudKit 访问 iCloud 便笺

有没有办法使用 CloudKit 获取 iCloud 笔记?我查看了文档:

https://developer.apple.com/library/archive/documentation/DataManagement/Conceptual/CloudKitWebServicesReference/index.html

https://developer.apple.com/documentation/cloudkit

但是没有办法找到如何访问 Notes 数据。

0 投票
0 回答
28 浏览

php - 如何解决奇怪的 PHP 解析错误?

使用 PHP 7.0.33

我有通过 CloudKit Web 服务执行查找的 PHP 代码。我已经使用该代码一年或更长时间了,它运行良好。

但是,当需要在一个文件 usersavedworks.html 中时,代码会引发解析错误

解析错误:语法错误,第 60 行 /home1/arbourme/public_html/artsinpa/user/listsavedworks.php 中的意外 '['

第 60 行是:

此行不会在它包含的任何其他文件中引发解析错误。此错误仅在 usersavedworks.html 中需要时发生。

usersavedworks.html 包含另一个 php 文件。

“profileFunctions.php”可以在任何地方使用,除非需要“listsavedworks.php”

我假设有一些不明显的代码冲突导致错误。这可能吗?我将如何查找/调试冲突?

这是 profileFunctions.php:

listsavedworks.php 是:

0 投票
1 回答
257 浏览

node.js - 如何使用资产字段保存记录使用服务器到服务器 cloudkit.js

我想使用服务器到服务器的 cloudkit js。用资产字段保存记录。
Asset 字段是一个 m4a 音频。保存后,音频文件损坏无法播放

Apple's Doc 不清楚 Asset 字段。
在保存到数据库的记录中,Asset 字段的值必须是 window.Blob 类型。在上面的代码片段中,assetFile 变量的类型是 window.File。
文档: https ://developer.apple.com/documentation/cloudkitjs/cloudkit/database/1628735-saverecords

但是在 nodejs 中,没有Blob.File,我用这样的代码填充了它:

记录保存成功。 成功 但是当我从 icloud.developer.apple.com/dashboard 下载音频时。
音频文件已损坏,无法播放
它出什么问题了。谢谢你的回复。

0 投票
0 回答
65 浏览

node.js - 无法仅在没有 serverToServerKeyAuth 的情况下使用 apiTokenAuth 对 CloudKit JS 进行身份验证

我正在使用公共数据库上的 CloudKit 使用存储在 iCloud 中的数据在 Node 中构建一个 Web。要查询我创建了一个apiToken和一个的数据serverToServerKey。对于第一个,我有一个字符串,但对于服务器到服务器的身份验证,我有一个pem包含私钥的文件。要配置 CloudKit,我正在执行以下操作:

这显然不会产生任何问题,我可以在容器中查询数据,并且我的 Web 应用程序在本地正常工作。

前一个片段位于我的index.js文件中,当我从 iCloud 获取数据时,将其传递给我的 HTML 文件,然后使用 EJS 渲染它。

现在我将其转移到生产中,我有一些疑问和问题。据我所知,我无法将.pem文件移动到服务器,因为它包含一个私钥,但现在它在后端,所以我不知道它是否会公开。

是否有可能对使用我的网络应用程序的用户进行身份验证apiToken。用户只需要读取数据而不是修改或创建,因此我不需要识别它们。

我是在问一些不可能的事情还是有人做过?我还没有找到任何有关此的信息。当我尝试使用之前的代码片段对用户进行身份验证时,仅使用apiTokenAuth并删除serverToServerKeyAuth我得到一个AUTHENTICATION_ERROR.