0

mirror-api gemをテストしているときに、subscriptions:list で自分のサブスクリプション ID の ID "timeline" を呼び出すことに気付きました。これはバグですか、それとも望ましい動作ですか? subscriptions:get はパラメータとして ID を取るので、オフだと思いました。

{
   "kind":"mirror#subscriptionsList",
   "items":[
      {
         "kind":"mirror#subscription",
         "id":"timeline",
         "updated":"2013-04-21T15:21:31.385Z",
         "collection":"timeline",
         "operation":[
            "UPDATE"
         ],
         "callbackUrl":"myapp.com/notification",
         "verifyToken":"a_very_important_token_obvi",
         "userToken":"1"
      }
   ]
}
4

1 に答える 1

5

そのため、API エクスプローラーに対していくつかのテストを行ったところ、ユーザーごとに最大 2 つのサブスクリプション (「タイムライン」用と「場所」用に 1 つ) しか持つことができず、これらのそれぞれの ID も取得できるようです。

「タイムライン」サブスクリプションが既にある場合、別のサブスクリプションを挿入しようとすると、既存のサブスクリプションが上書きされます。したがって、たとえば、タイムラインの挿入用に 1 つの callbackUrl を作成し、タイムラインの削除用に別の callbackUrl を作成することはできません (これは、コールバックで要求を適宜分割できるため、問題ないと思います)。

サブスクリプションは 2 つしかないため、一致する ID が 2 つしかなくても問題はありません。そして、実際に物事を簡単にします (実際には文書化されていないため、この動作に依存できる場合)。サブスクリプションを更新または削除する必要がある場合、使用するランダム ID を覚えておく (または subscriptions.list を介して見つける) 必要がないためです。 subscriptions.update または subscriptions.delete

実際には、コレクションを ID として使用して、subscriptions.updateおよびsubscriptions.deleteのサンプルでこの動作を利用しています。

service.subscriptions().update(id=collection, body=subscription).execute()

service.subscriptions().delete(collection).execute()

これは、同じユーザーが同じものに対して複数のサブスクリプションを誤って持つことを防ぐためにこのように実装されていると思いますが、これが実際に望ましい動作である場合は、ドキュメントに含める必要があります。

于 2013-04-27T09:14:21.520 に答える