服务如何识别用户?

时间:2013-04-19 23:20:03

标签: google-mirror-api

用例:

用户拍摄漂亮的照片,并希望将其保存到他们的evernote帐户。

enter image description here

  1. 用户使用OAuth 2.0进行授权。该服务存储其凭据。
  2. 在OAuth 2.0舞蹈结束后,该服务会插入一个名为“保存到Evernote”的联系人。
  3. 接下来,该服务通过插入时间轴集合的订阅来订阅此用户时间轴中的更新。
  4. 用户激活联系人。保存到Evernote现已完全设置。
  5. 随着时间的推移,用户会拍照。
  6. 用户与Save to Evernote共享照片。这使得与此照片相关联的时间线卡可以访问该服务。
  7. 由于服务订阅了时间表更新,因此会向您的服务发送通知。此通知链接到包含共享照片的时间轴项目。
  8. 该服务会检查通知并使用附带的ID来获取包含照片的时间轴卡。
  9. 接下来,该服务会检查时间轴项目并使用附件ID来获取照片的字节。
  10. 服务将照片上传到用户的Evernote。
  11. 最后,该服务构建一个新的时间轴卡,并将其插入用户的时间轴卡并显示成功消息。
  12. Mirror API Documentation看来,一旦用户共享时间轴项,服务就会收到这样的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用户的联系,以便我的服务可以代表他们执行特定于该用户的服务?

1 个答案:

答案 0 :(得分:3)

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

您为该用户创建subscription时设置了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。
  6. 故事的其余部分按照你在问题中描述的那样继续进行。