4

Google カレンダー統合用のアプリケーションを作成しています。誰かが Google カレンダーのイベントを手動で変更したときに、Google から通知を受け取ろうとしています。それで、Googleと私のアプリケーションとの間にチャネルを作成しました。ここでの問題は、Google が応答ヘッダーをリダイレクト URI に送信しているときに、カレンダーへの変更がどこにあるのかについての説明がないことです。返信が届きますのでご確認ください

POST https://mydomain.com/notifications // Your receiving URL.
Content-Type: application/json; utf-8
Content-Length: 0
X-Goog-Channel-ID: 4ba78bf0-6a47-11e2-bcfd-0800200c9a66
X-Goog-Channel-Token: 398348u3tu83ut8uu38
X-Goog-Channel-Expiration: 1367869013915
X-Goog-Resource-ID:  ret08u3rv24htgh289g
X-Goog-Resource-URI: https://www.googleapis.com/calendar/v3/calendars/my_calendar@gmail.com/events
X-Goog-Resource-State:  exists
X-Goog-Message-Number: 10

イベントに変更がある場所の説明を取得する方法を教えてください。

4

2 に答える 2

3

増分同期を行う必要があります (前の SO 回答を参照)。私の好みに合わせて少し修正されたクリエイター自身から:

アプリが最初に行う必要があるのは、関心のあるカレンダーを購読するという新しいプッシュ機能を取得することです。カレンダーが変更されると、Google がアプリに通知し、アプリは API 呼び出しを行って更新を取得します。

例として、カレンダー my_calendar@my-host.com があるとします。アプリは my-host.com ドメインのサーバーでホストされており、プッシュ通知は HTTPS Web フックhttps://my-host.com/notificationに配信する必要があります。

my_calendar@my-host.com が変更されるたびに、Google カレンダー サーバーはhttps://my-host.com/notificationで Web フック コールバックをトリガーします。コールバックを受け取った後、アプリは増分同期を行う必要があります。

于 2015-04-06T03:53:07.407 に答える
1

これは最終的な正しい返信 (プッシュ通知) です。または、少なくともまったく同じものを受け取っています。前回の同期日をチャネル データと一緒に保存し、そのような通知を受け取るたびに、前回の同期以降に変更されたイベントをリクエストして Google API を呼び出すことをお勧めします。私が抱えている唯一の問題は、Googleサーバー時間という重要なものが1つ欠けていることです。私のサーバーの時間は Google の時間と正確に同じではなく、同期リクエストを送信する前に updateMin パラメータを調整する必要があります (単純な「now()」ではありません)。更新されたイベントを取得したら、最後の同期日付を再度保存することを忘れないでください:)

于 2013-09-13T08:30:03.727 に答える