Ios 我们可以为Cloudkit JS创建一个API令牌来访问共享数据而不进行身份验证吗

Ios 我们可以为Cloudkit JS创建一个API令牌来访问共享数据而不进行身份验证吗,ios,cloudkit,cloudkit-js,Ios,Cloudkit,Cloudkit Js,我创建了一个iCloud用户webuser@somedomain.com然后,我与该用户共享特定记录 我想做的是让一个网站使用该用户只访问它可以访问的共享记录,而不让他通过iCloud与苹果进行身份验证。原因是我想控制网站可以做什么,它可以访问什么,而不要求用户登录/注册Apple iCloud,我不希望每个访问网站的用户都必须登录到Apple ID。我认为使用web服务的cloudkit js可能实现这一点,但似乎服务器到服务器的密钥只能访问到公共数据库 我不太精通JS,我正试图让web开发人

我创建了一个iCloud用户webuser@somedomain.com然后,我与该用户共享特定记录

我想做的是让一个网站使用该用户只访问它可以访问的共享记录,而不让他通过iCloud与苹果进行身份验证。原因是我想控制网站可以做什么,它可以访问什么,而不要求用户登录/注册Apple iCloud,我不希望每个访问网站的用户都必须登录到Apple ID。我认为使用web服务的cloudkit js可能实现这一点,但似乎服务器到服务器的密钥只能访问到公共数据库

我不太精通JS,我正试图让web开发人员访问我的记录


这个主题似乎不是很受欢迎,也没有太多的信息存在。请不要只是说“不可能”。给我一点信息。

您是正确的,通过服务器到服务器密钥或JS API令牌获取CloudKit数据只能让您访问公共数据库。要获取私有或共享数据库中的任何内容,需要用户身份验证

这是明智的,因为如果没有CloudKit用户作为引用,应用程序将不知道要查询哪个私有数据库。如果匿名用户(即使是您的应用程序)可以查询私人用户数据,那么安全性也会降低

作为一种解决方法,您可以让iOS/macOS应用程序将您希望在web上获得的用户数据的某些部分推送到您的公共数据库中。您可以在公共数据库中创建类似
Web
的记录类型,并为所需的所有数据创建字段。这样共享数据就可以使用了,但任何人都可以使用。用户仍然需要在您的web应用程序中识别自己以获取某些数据(如果您的
web
记录类型中有
userId
字段,则可以这样做)


希望这是有道理的。如果您有后续问题,请告诉我。

您认为通过服务器到服务器密钥或JS API令牌获取CloudKit数据只能访问公共数据库是正确的。要获取私有或共享数据库中的任何内容,需要用户身份验证

这是明智的,因为如果没有CloudKit用户作为引用,应用程序将不知道要查询哪个私有数据库。如果匿名用户(即使是您的应用程序)可以查询私人用户数据,那么安全性也会降低

作为一种解决方法,您可以让iOS/macOS应用程序将您希望在web上获得的用户数据的某些部分推送到您的公共数据库中。您可以在公共数据库中创建类似
Web
的记录类型,并为所需的所有数据创建字段。这样共享数据就可以使用了,但任何人都可以使用。用户仍然需要在您的web应用程序中识别自己以获取某些数据(如果您的
web
记录类型中有
userId
字段,则可以这样做)


希望这是有道理的。如果您有后续问题,请告诉我。

身份验证是否必须由用户查看,或者是否可以通过带有用户名和密码的javascript完成。我想这就是我所缺少的,我不想因为mondaine的事情而放弃一个2年的项目,我认为这是可能的。我想通过一个用户字段来理解你对公共数据库访问的意思。因此,如果我做对了,我必须在每个网页上设置一个java脚本用户名,以验证哪个网站正在查询,并让它访问我可以命名为“username.recortype1”等的正确记录中的数据。但这难道不意味着如果一个聪明的家伙发现了这一点,他可以在没有安全性的情况下读取所有数据吗,或者他绝对需要服务器到服务器令牌。我想如果有人泄露了令牌,这也可能是一个问题。嗯…??您可以限制可以提出请求的位置。在CloudKit仪表板中,单击容器,然后转到API访问,然后创建一个新令牌。然后,您可以设置允许哪些域使用该JavaScript API令牌发出请求:身份验证是否必须由用户看到,或者可以由JavaScript使用用户名和密码完成。我想这就是我所缺少的,我不想因为mondaine的事情而放弃一个2年的项目,我认为这是可能的。我想通过一个用户字段来理解你对公共数据库访问的意思。因此,如果我做对了,我必须在每个网页上设置一个java脚本用户名,以验证哪个网站正在查询,并让它访问我可以命名为“username.recortype1”等的正确记录中的数据。但这难道不意味着如果一个聪明的家伙发现了这一点,他可以在没有安全性的情况下读取所有数据吗,或者他绝对需要服务器到服务器令牌。我想如果有人泄露了令牌,这也可能是一个问题。嗯…??您可以限制可以提出请求的位置。在CloudKit仪表板中,单击容器,然后转到API访问,然后创建一个新令牌。然后,您可以设置允许哪些域使用该JavaScript API令牌发出请求: