Как определить, был ли ярлык добавлен в электронную почту через gmail api?

Я пытаюсь определить, получило ли сообщение электронной почты одну конкретную метку. Следуя документации здесь, я десериализую push-сообщение и получаю historyId, например. 390100, но оказывается, я не могу получить точную запись истории 390100.

API history.list имеет параметр startHistoryId, и в документах указано, что вы получаете всю историю после этого historyId.

Однако, что еще хуже, событие истории 390100 пусто (sic!). Настоящая запись с labelsAdded была до< /em> этот historyId в push-уведомлении, например. на 39086, который не опубликован

Пытался обходной путь и вычесть, например. 15 сформируйте 390100 и сделайте history.list с startHistoryId 39085

Если мне повезет, и 39085 все еще существует, я не получу 404 и в конечном итоге получу информацию о том, что моя метка была добавлена ​​​​к сообщению. Но это кажется мне плохим взломом.

Есть ли надежный способ узнать, в какой момент в истории была добавлена ​​метка, и есть ли надежный способ поиска в истории в обратном направлении?

Я также опубликовал разглагольствование/проблему здесь


person tomaszkubacki    schedule 21.11.2015    source источник


Ответы (1)


historyId, которое вы получаете в push-уведомлении, просто представляет текущее время. Поэтому, если вы используете этот historyId при запросе истории, вы не получите никаких результатов. Вместо этого используйте этот рабочий процесс:

  1. Сохраните historyId.
  2. Когда вы получите толчок, используйте historyId, который вы сохранили на шаге 1, и вы получите все соответствующие изменения.
  3. Сохраните hisotryId, которое вы получили в push-уведомлении, и используйте его в следующий раз.
  4. Повторите шаг 2.

Пример

  1. Я получаю начальный historyId с операцией getProfile:

Запрос

GET https://www.googleapis.com/gmail/v1/users/me/profile?fields=historyId&access_token={YOUR_API_KEY}

Ответ

{
 "historyId": "655156"
}
  1. Я получаю толчок и просматриваю историю с момента последней время:

Запрос

GET https://www.googleapis.com/gmail/v1/users/me/history?labelId=STARRED&startHistoryId=655156&fields=history%2FlabelsAdded&key={YOUR_API_KEY}

Ответ:

{
 "history": [
  {
   "labelsAdded": [
    {
     "message": {
      "id": "151237ed0d001368",
      "threadId": "151237ed0d001368",
      "labelIds": [
       "STARRED",
       "CATEGORY_UPDATES",
       "INBOX"
      ]
     },
     "labelIds": [
      "STARRED"
     ]
    }
   ]
  }
 ]
}
  1. Сохраните historyId, которое я получил в толчке, и используйте его в следующий раз.
person Tholle    schedule 21.11.2015