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

问题描述 投票:0回答:3

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

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

“允许的来源”设置为“所有域”,我从本地主机调用身份验证 API。我正在运行 Windows 10 并使用 Chrome 浏览器(如果这在这里意味着什么,可能没有)。

似乎有人几年前也遇到过同样的问题,并将其发布在Apple论坛上,但当时并没有受到太多关注。

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

cloudkit cloudkit-web-services
3个回答
1
投票

据我了解,您只能通过前端 JavaScript API 获取网络身份验证令牌(

ckWebAuthToken
)。用户使用其 Apple ID 登录后应将其返回。然后,您可以
POST
该值到您的后端应用程序并以某种方式存储它(可能作为会话变量)。

您可以在此页面阅读有关获取网络身份验证令牌的更多信息。

如果您对解决这个问题有了更多的了解,并且比我了解得更多,我洗耳恭听。 :)


1
投票
同样,我也没能用 postMessage 方法拦截

ckWebAuthToken

。我怀疑它只能与 JS SDK 中的
setUpAuth
生成的登录按钮一起使用。

因此,我重定向到我在某处托管的页面,在那里我从查询字符串中获取令牌并将其发送到我的主机应用程序,所有这些都使用 JavaScript。笨重但有效! :)


0
投票
根据我的测试,ckSession 本身就是 ckWebAuthToken。对您收到的 ckSession 字符串进行编码并将其附加到将来的请求中。要对 ckSession 字符串进行 URL 编码,请将“+”替换为“%2B”,将“/”替换为“%2F”,将“=”替换为“%3D”。

© www.soinside.com 2019 - 2024. All rights reserved.