标签: cloudkit-web-services

Cloudkit JS && Node JS

我目前正在尝试使用Apple的新CloudKit JS执行与iCloud Server的服务器端连接.根据WWDC 2015"CloudKit JS和Web服务",由于CloudKit JS是一个纯JS框架,因此您可以在所有JS环境中使用它,例如节点JS.

我从https://cdn.apple-apple-coudkit.com/ck/1/cloudkit.js复制了CloudKit JS的源代码,并将其粘贴到名为"cloudkit.js"的文件中.这是我尝试过的演示:

var CloudKit = require("/some/folders/cloudkit.js")

function demoPerformQuery() {
  CloudKit.configure({
      containers: [{
    containerIdentifier: 'myContainerIdentifier',
    apiToken: 'myAPIToken',
    environment: 'development'
      }]
    })

  var container = CloudKit.getDefaultContainer();
  var publicDB = container.publicCloudDatabase;

  publicDB.performQuery({recordType: 'Items'}).then(function(response){
    // never called :-(
  })
}

var express = require('express')

var app = express()

app.get("/", function(){
  demoPerformQuery()
})

var server = app.listen(8080, function () {
  console.log("server launched")
})
Run Code Online (Sandbox Code Playgroud)

由于正确调用了所有函数,因此CloudKit似乎已正确设置.但是从不调用performQuery的回调.为什么?

是否有人已经成功在服务器环境中配置CloudKit JS?

提前致谢

javascript node.js ios cloudkit cloudkit-web-services

20
推荐指数
1
解决办法
3538
查看次数

验证来自iOS应用的后端来电

我试图找到相当于这个Android验证,但对于iOS.

最初发布在博客文章中, 但现在已合并到主要的Android文档中,验证让您知道3件事:然后,您知道:

  1. 该令牌由Google发布.
  2. 令牌被发送到由有效负载的电子邮件字段中标识的人员操作的设备.
  3. 令牌是由有效负载的azp字段中的客户端ID标识的Android应用获得的.

关键是:

GoogleAuthUtil会发现Android应用和网络客户端ID位于同一个项目中,未经用户批准,会将ID令牌返回给Google签名的应用.

因此,我能够在不中断用户的情况下验证后端呼叫.

苹果公司是否有类似于iOS的东西,当苹果公司观察到iOS应用程序和网络客户端ID时,我可以获得Apple签署的ID令牌?

我发现了一个试图找到类似问题SO问题,但我希望找到一个更简单的解决方案.这个问题已经超过一年了,所以我希望可能有更好的答案,可能还有新的CloudKit网络服务.

google-authentication ios cloudkit cloudkit-web-services

19
推荐指数
1
解决办法
1657
查看次数

从CloudKit导出数据

我正在与cloudkit仪表板交互并查看我的应用程序收集的数据.

如何从仪表板(data-> csv或json)导出所有数据,以便我可以对其进行一些分析?

谢谢!

cloudkit cloudkit-web-services

7
推荐指数
1
解决办法
601
查看次数

7
推荐指数
1
解决办法
6944
查看次数

从Android访问CloudKit?

是否可以使用 CloudKit Web Service从Android本机应用程序使用?如果我想让用户能够修改记录,该身份验证弹出窗口将如何在本机应用程序中显示?

我是否可以在本机应用程序上放置一个按钮,该按钮将打开浏览器,并且重定向的内容将出现在该应用程序中,并且当身份验证成功时,指定一个回调,在该回调中可以唯一标识用户的令牌,我想可以接收到用户记录名称?

Apple工程师在此会议视频中讨论了从Web登录的问题:https : //developer.apple.com/videos/wwdc/2015/?id=704

android ios cloudkit cloudkit-web-services

5
推荐指数
1
解决办法
3704
查看次数

是否可以通过 CloudKit Dashboard 导入批量数据?

我了解了如何在 CloudKit 仪表板中创建记录类型并一次添加一个记录。我想尝试添加几百条记录进行测试。有没有办法将 CSV 或 JSON 文件导入仪表板?

json cloudkit cloudkit-web-services

5
推荐指数
1
解决办法
1616
查看次数

如何使用CloudKit Web服务基于参考字段进行查询?

我有两个看起来像这样的CloudKit数据对象:

父对象:

{
    "records": [
        {
            "recordName": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57",
            "recordType": "ParentObject",
            "fields": {
                "fsYear": {
                    "value": "2015",
                    "type": "STRING"
                },
                "displayOrder": {
                    "value": 2015221153856287200,
                    "type": "INT64"
                },
                "fjpFSGuidForReference": {
                    "value": "14102C0A-60F2-4457-AC1C-601BC628BF47-184-000000012D225C57",
                    "type": "STRING"
                },
                "fsDateSearch": {
                    "value": "2015221153856287158",
                    "type": "STRING"
                },
            },
            "recordChangeTag": "id4w7ivn",
            "created": {
                "timestamp": 1439149087571,
                "userRecordName": "_0d26968032e31bbc72c213037b6cb35d",
                "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B"
            },
            "modified": {
                "timestamp": 1439149087571,
                "userRecordName": "_0d26968032e31bbc72c213037b6cb35d",
                "deviceID": "A19CD995FDA3093781096AF5D818033A241D65C1BFC3D32EC6C5D6B3B4A9AA6B"
            }
        }
    ],
    "total": 
}
Run Code Online (Sandbox Code Playgroud)

子对象:

{
    "records": [
        {
            "recordName": "2015221153856287168",
            "recordType": "ChildObject",
            "fields": {
                "District": {
                    "value": "002", …
Run Code Online (Sandbox Code Playgroud)

cloudkit cloudkit-web-services

5
推荐指数
1
解决办法
397
查看次数

在没有 iCloud 帐户的情况下使用带有 CloudKit JS 的 Android 设备

在观看 WWDC 2015 CloudKit JS 时,我意识到 Android 设备用户可能需要 iCloud 才能从 CloudKit DB 请求数据,因为苹果用户需要打开 iCloud 帐户。我的假设正确吗?有没有办法让我的应用程序跨平台?

ios icloud-api cloudkit cloudkit-web-services

5
推荐指数
2
解决办法
1641
查看次数

给定私钥和消息,不确定如何生成ECDSA签名

我正在遵循Apple关于编写CloudKit Web服务请求的指南。我遇到的麻烦是“身份验证Web服务请求”下的步骤2:

  1. 用您的私钥计算此消息的ECDSA签名。

在此之前,我生成了一个.pem文件证书,在文本编辑器中打开该文件时会显示我的私钥,因此我也使用字符串格式。

我还遵循了生成消息所指内容的步骤,现在将其作为字符串。

因此,假设我有一个私钥(或.pem文件,如果需要)和一条消息作为字符串,那么从理论上讲,我应该很容易获得使用私钥计算的消息的ECDSA签名。但是,这就是我努力的地方。我在网上发现的图书馆似乎采用了更为复杂的方法,其中的移动部件不同,没有引用.pem文件,也没有谈论生成新的公共/私有密钥。

此步骤的任何帮助将不胜感激。

ruby ruby-on-rails ecdsa cloudkit cloudkit-web-services

5
推荐指数
1
解决办法
798
查看次数

调用服务器到服务器CloudKit Web服务时的授权错误

我正在尝试实施与CloudKit Web服务的一些基本集成,遵循Apple的身份验证请求指南.我已经按照一些帮助,这个这个问题,就是如何正确授权的请求,并且似乎是正确的以下所有步骤,但我仍然得到401 AUTHENTICATION_FAILED苹果错误.

我定位的端点是一个POST端点,用于在给定记录名称的情况下检索记录.

我在我的代码中添加了注释,以显示我在不同阶段获得的输出,并且我使用了替代证书,因此我没有提供我的正版私钥:

def self.signature(parameters, date, image_id)
    #date: 2016-08-14T14:32:20Z

    #parameters: {"records":[{"recordName":"7DBC4FAD-D18C-476A-89FB-14A515098F34"}]}

    encoded_parameters = Digest::SHA256.base64digest(parameters)

    #encoded_parameters: 6gmJ4AvmJgkNY4SJm6ImOxZaZ07J7cih/tRXI0zkRjQ=

    url_subpath = CloudKit.url_subpath

    #url_subpath: /database/1/iCloud.ProjectDent.TwIM/development/public/records/lookup

    message = date + ':' + encoded_parameters + ':' + url_subpath

    #message: 2016-08-14T14:23:35Z:6gmJ4AvmJgkNY4SJm6ImOxZaZ07J7cih/tRXI0zkRjQ=:/database/1/iCloud.ProjectDent.TwIM/development/public/records/lookup

    private_key = OpenSSL::PKey.read(File.read('altkey.pem'))

    signature = private_key.dsa_sign_asn1(OpenSSL::Digest::SHA256.digest(message))

    #signature: -? WX?xfc???????,????v?3+Xt!?$R?_Y?×*?,?3??Z-\#????h

    encoded_signature = Base64.strict_encode64(signature)

    #encoded_signature: MEUCIFdYlHhmrxoIY8KW1tT6yZT17bYsP8ia09WTdpEzK1h0AiEA0yRSh39fWYHDlyqJLNgzhr9aLVwj2cWtkse3aA0tGZI=

    return encoded_signature
end

def self.headers(parameters, image_id)
    date = Time.now.utc.iso8601

    signature = self.signature(parameters, date, image_id)

    headers = {
        'X-Apple-CloudKit-Request-KeyID' => CloudKit.key_id, …
Run Code Online (Sandbox Code Playgroud)

ruby openssl ruby-on-rails cloudkit cloudkit-web-services

4
推荐指数
1
解决办法
217
查看次数