4

用例:

用户拍了一张漂亮的照片,并希望将其保存到他们的印象笔记帐户中。

在此处输入图像描述

  1. 用户使用 OAuth 2.0 进行授权。该服务存储他们的凭据。
  2. 就在 OAuth 2.0 舞蹈完成后,该服务会插入一个名为“保存到 Evernote”的联系人。
  3. 接下来,该服务通过插入对时间线集合的订阅来订阅此用户时间线中的更新。
  4. 用户激活联系人。保存到 Evernote 现已完全设置。
  5. 随着时间的推移,用户拍照。
  6. 用户通过 Save to Evernote 分享照片。这使得服务可以访问与此照片关联的时间线卡。
  7. 由于该服务订阅了时间线更新,因此会向您的服务发送通知。此通知链接到包含共享照片的时间线项目。
  8. 该服务检查通知并使用包含的 id 来获取包含照片的时间线卡片。
  9. 接下来,该服务检查时间线项目并使用附件 ID 来获取照片的字节。
  10. 该服务将照片上传到用户的印象笔记。
  11. 最后,该服务构造一个新的时间线卡片,并将其与成功消息一起插入到用户的时间线卡片中。

Mirror API 文档看来,一旦用户共享时间线项目,服务就会收到一个 POST,如下所示:

{
  "collection": "timeline",
  "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
  "operation": "UPDATE",
  "userToken": "harold_penguin",
  "verifyToken": "random_hash_to_verify_referer",
  "userActions": [
    {
      "type": "SHARE"
    }
  ]
}

userToken 是我在首次验证应用程序时收到的值吗?如果是这样,我可以使用该值将从 Glass 收到的 POST 与保存在我的数据库中的用户连接起来吗?如果不是,我如何将共享连接到我的服务与 Glass 用户的联系人,以便我的服务可以代表他们执行特定于该用户的服务?

4

1 回答 1

3

userToken确实是您用来将通知与触发它的用户相关联的字段。

您在为该用户userToken创建订阅时设置。您在插入订阅时指定的任何值都将作为userToken它产生的所有通知提供。这意味着当您创建订阅时,您总是希望使用您的系统可以关联回正确用户的唯一标识符。

例如:

  1. Jane 使用您的服务进行身份验证。Jane 在 Glassware 数据库中的唯一用户 ID 为 42。
  2. 在身份验证时,您timeline通过插入此订阅来订阅她的收藏:

    {
      "collection": "timeline"
      "userToken": "42",
      "callbackUrl": "https://example.com/notify/callback"
    }
    
  3. Jane 与您的 Glassware 分享了一张照片。
  4. 通知将发送到您的服务。它看起来像这样:

    {
      "collection": "timeline",
      "itemId": "3hidvm0xez6r8_dacdb3103b8b604_h8rpllg",
      "operation": "UPDATE",
      "userToken": "42",
      "userActions": [
        {
          "type": "SHARE"
        }
      ]
    }
    
  5. 您的 Glassware 使用该userToken属性来查找正确的用户:Jane。

故事的其余部分按照您在问题中的描述进行。

于 2013-04-19T23:54:07.507 回答