Как пропустить токен, чтобы позаботиться об удалении электронной почты?
Таким образом, токен пропуска, который я получаю от Graph API - это число, основанное на моем понимании (я могу ошибаться), оно указывает, сколько писем необходимо пропустить.
В нашем приложении мы сохраняем этот токен пропуска в нашей базе данных, чтобы мы могли получить следующую страницу электронных писем. Итак, если, скажем, текущий токен пропуска пользователя равен 100, и перед тем, как мы отправим запрос на сервер с токеном пропуска 100, этот пользователь удалит 10 электронных писем, что произойдет, если все еще использовать этот токен пропуска 100?
Поскольку я не уверен, как справиться с такого рода делом об удалении электронных писем пользователей, наше приложение работает так: мы всегда ставим минус на токене пропуска (например, -10) и проверяем, можем ли мы найти любое электронное письмо или временную метку перекрытия между текущим ответом и предыдущим ответом, если нет перекрытия, мы делаем еще один минус с токеном пропуска. Это как походка назад. Мы прекращаем делать минус, пока не найдем совпадение.
Имеет ли это смысл? До сих пор я заметил, что некоторые ответы о пропущенных токенах дают nextLink значение null, хотя в папке входящих сообщений пользователя все еще находятся новые электронные письма. Кроме того, мы пропустили пару электронных писем в течение примерно полугода (это означает, что электронная почта находится в почтовом ящике пользователя, но не получена нашим приложением).
1 ответ
API Delta Query (Track Changes) лучше подходит для ваших нужд. Это эффективно позволяет вам сохранять "закладки" в журнале изменений чьего-либо почтового ящика.
Например, вместо сохранения пропускаемого токена вы должны сохранить deltaLink, который вы получаете от вызова /messages/delta
, При повторном вызове API с помощью deltaLink вы получите набор изменений с момента последнего вызова API + новый deltaLink. Это позволяет вам "синхронизировать" изменения, которые происходят в папке входящих сообщений, которые вы отслеживаете.
Справочные документы по API находятся здесь: https://docs.microsoft.com/en-us/graph/delta-query-overview