0

Google API、この場合は Google Glass Mirror API にアクセスするために、Google の公式 js クライアントをいじっています。

以前にタイムラインに挿入したタイムライン カードを更新するために、updateまたはそれ以上のpatch方法 ( https://developers.google.com/glass/v1/reference/timelineを参照)を使用する方法についてのガイダンスが必要です。

挿入とリストはかなり簡単で、うまく機能します。このチュートリアルを使用して開始しました: https://github.com/emil10001/glass-mirror-nodejs-auth-demo/blob/master/app.js

私は次のことを試しました:

card = {
        "kind": "mirror#timelineItem",
        "id": "74b88eb3-a6d7-4c13-8b0e-bfdecf71c913",
        "created": "2014-05-22T20:26:56.253Z",
        "updated": "2014-05-22T20:27:18.961Z",
        "etag": "1400790438961",
        "text": "This item3 auto-resizes according to the text length",
        "notification": {
            "level": "DEFAULT"
        }
    }

client
    .mirror.timeline.update({"id": card.id, resource: card})
    .withAuthClient(oauth2Client)
    .execute(function (err, data) {
        if (!!err)
            errorCallback(err);
        else
            successCallback(data);
    });

そして、次のペイロードで成功した応答を受け取ります:

{ 
  kind: 'mirror#timelineItem',
  id: '74b88eb3-a6d7-4c13-8b0e-bfdecf71c913',
  selfLink: 'https://www.googleapis.com/mirror/v1/timeline/74b88eb3-a6d7-4c13-8b0e-bfdecf71c913',
  created: '2014-05-22T20:26:56.253Z',
  updated: '2014-05-22T20:32:11.862Z',
  etag: '1400790731862' 
}

私が最終的に得たのは、中身が空のカードです。update メソッドを正しく使用しておらず、2 番目のパラメーターのresource名前が正しくないのではないでしょうか?

4

1 に答える 1

0

Google API は通常、次の 2 つの方法で値を指定します。

  • パラメーター。これらは通常、作業しているリソースや、そのリソースがどのように表示されるかを制御する短い値です。(API ドキュメントを見ている場合、これらは通常 URL の一部です。)
  • 資力。これらは、あなたが気にかけている価値そのものです。(API ドキュメントを見ている場合、これはメッセージの本文として送信されます。)

timeline.insert の場合、リソースを追加するだけなので、リソースを扱うだけです。タイムライン.パッチとタイムライン.更新では、パラメーター (編集しているリソースの ID) とリソースへの変更の両方を処理します。したがって、関数呼び出しに 2 つのパラメーターを指定する必要があります。

上記の例を使用すると、呼び出しは次のようになります。

client
.mirror.timeline.update(card.id, card)
.withAuthClient(oauth2Client)
.execute(function (err, data) {
    if (!!err)
        errorCallback(err);
    else
        successCallback(data);
});

また、あなたは、 timeline.patchtimeline.updateの違いについても尋ねました。

Update は、タイムライン アイテムを、カードで提供するすべて (書き込み可能) に置き換えるために使用されます。したがって、上記の例を使用すると、テキストフィールドと通知フィールドはおそらく以前のものから更新されます。他のフィールドは無視されます。書き込み可能ではなく、Glass が必要に応じて設定/変更します。

あなたが推測したように、timeline.update はカードを持っているときに最も便利です (カードが送信されたときに保存したか、timeline.list などから取得したため)、その中のいくつかのフィールドを変更する必要があります。 .

パッチは、カード全体を持っていない可能性があるが、その中のいくつかのフィールドを更新したい場合に使用されます。この場合、リソースは変更したいフィールドのみを指定し、他のフィールドはそのままにします。

したがって、次の 2 つは同等です。

var update = {
  text: "new text",
  notification: {
    level: "DEFAULT"
  }
};
client.mirror.timeline.update( card.id, update )
.withAuthClient(oauth2Client)
.execute(function(err,data){
  console.log(err,data);
});

var patch = {
  text: "new text",
};
client.mirror.timeline.patch( card.id, patch )
.withAuthClient(oauth2Client)
.execute(function(err,data){
  console.log(err,data);
});

パッチを使用してフィールド (上記の通知など)を削除する場合は、フィールドを明示的に null に設定する必要があることに注意してください。

于 2014-05-23T11:54:12.960 に答える