Google Mail-API users.watch - keine Details für historyId

8

Ich habe Google Pub / Sub erfolgreich eingerichtet, um die Gmail API Watch-Funktion wie hier beschrieben zu verwenden: Ссылка um das INBOX-Label in meinem Google Mail-Konto zu sehen.

Sobald eine neue Nachricht angekommen ist, erhalte ich sofort eine Push-Benachrichtigung in einem gültigen Format wie:

%Vor%

Nachdem ich base64decode Daten habe, bekomme ich Email und historyId. Dann, wie vorgeschlagen, fordere ich die gmail.users.history.list-API (über die API-Konsole) mit startHistoryId an, die von der Push-Benachrichtigung auf die historyId gesetzt wurde. Und dann erhalten Sie einfach leere Antwort ohne Details:

%Vor%

So HistoryId von einer Benachrichtigung scheint nicht gültig. Scheint, dass Gmail users.watch API nicht richtig funktioniert und falsche historyId sendet, oder ich vermisse gerade etwas?

    
Yaroslav Pogrebnyak 03.08.2015, 21:55
quelle

1 Antwort

13

Sieht aus, als hätte ich missverstanden, wie users.history.list funktioniert, und der Ablauf sollte etwas wie unten beschrieben sein:

  1. Merken Sie historyId aus der Antwort der user.watch-Anfrage.

  2. Bei einer Push-Benachrichtigung rufen Sie users.history.list mit der zuvor gespeicherten historyId als startHistoryId anstelle einer neuen aus der Benachrichtigung auf und erhalten Sie eine Liste der letzten Änderungen.

  3. Merken Sie sich historyId von der Benachrichtigung und gehen Sie zu 2.

Wenn wir die Antwort jedes Aufrufs von users.history.list betrachten, ist historyId immer vorhanden, es ist ein Marker für die Änderung des letzten Verlaufs. Die Push-Benachrichtigung bringt die neuste historyId, also wenn wir users.history.list damit (wie in der Frage) anfragen, haben wir ein leeres Array des Verlaufs und der Server lässt dieses leere "history" -Feld aus der Antwort fallen, deshalb bekommen wir das :

%Vor%

Aber nicht das:

%Vor%

Weitere Informationen finden Sie im Synchronisierungsleitfaden: Ссылка

So können wir nicht einfach Details über die neue Nachricht erhalten, die über die Push-Benachrichtigung in INBOX angekommen ist, und wir müssen uns mit dem History-Mining und der Synchronisation beschäftigen, um sie zu finden.

    
Yaroslav Pogrebnyak 04.08.2015, 19:51
quelle