Описать проблему ↗

Интеграции

amoCRM перестала работать после истечения токена

amoCRM работает после подключения, а затем перестаёт принимать запросы. Разберём обновление токенов и причины, по которым ручное переподключение помогает ненадолго.

Редакция «починимсайт» · Обновлено · 3 мин. чтения

Что происходит и с чего начать

Токен доступа имеет ограниченный срок действия. Интеграция должна получать следующий токен предусмотренным способом и сохранять актуальные данные для последующих запросов. Если этот механизм не работает, ручное подключение временно возвращает обмен, но через время отказ повторяется. Поэтому важно проверить именно цикл обновления, а не просто заменить значение в настройках. Также учитывают несколько процессов: сайт и очередь могут использовать разные сохранённые версии или одновременно пытаться обновить один набор данных доступа.

Что можно проверить самостоятельно

  1. Запишите время успешного подключения и первого отказа. Уточните, повторяется ли проблема через похожий интервал или только после публикации, перезапуска и запуска нескольких заданий.
  2. Проверьте, ломаются все операции или только очередь. Сохраните безопасный текст ошибки, исключив токены и коды авторизации из переписки и снимков экрана.
  3. Сообщите, где ещё используется это подключение: основной сайт, тестовая копия, внешняя автоматизация. Не копируйте действующие секреты между окружениями без согласования их назначения.

Как понять результаты проверки

Специалист проверяет получение, запись и согласованное обновление токенов по правилам amoCRM. Важно хранить актуальную пару данных и не затирать её устаревшим результатом параллельного процесса. Если авторизация отозвана, требуется другое восстановление, чем при обычном истечении срока. Программа должна различать эти состояния и ограничивать повторы. Секреты не должны попадать в журнал целиком: для диагностики достаточно времени, типа операции и безопасной части ответа, позволяющей связать отказ с конкретным этапом обновления.

Что проверяет разработчик

Для этой части понадобятся доступ к настройкам, журналам ошибок или коду. Её можно передать специалисту вместе с результатами предыдущих шагов.

  1. Найдите первый отказ и ответ запроса обновления. Сверьте домен аккаунта и параметры интеграции с используемым окружением.
  2. Проверьте, сохраняются ли новые токены после успешного обновления. Запись должна быть доступна всем процессам, использующим интеграцию.
  3. Сопоставьте одновременные запросы worker и веба. Два процесса могут попытаться обновить доступ по одному старому состоянию и перезаписать результат.

На что обратить внимание

Интеграция может обновить access token в памяти одного процесса, но оставить прежние данные в постоянном хранилище. После перезапуска или следующего запроса ошибка возвращается.

Как исправляют причину

Сериализуйте обновление для одного аккаунта и сохраняйте согласованный набор данных атомарно. При окончательном отзыве доступа выполните предусмотренную повторную авторизацию, а не бесконечный цикл повторов.

Как убедиться, что проблема решена

На тестовой интеграции проверьте обновление и последующий запуск другого процесса. После восстановления сверяйте недоставленные заявки перед повторной отправкой, чтобы не создать дубли.

После исправления проверьте не только первый запрос, но и автоматическое обновление доступа в контролируемых условиях. Затем протестируйте обычную параллельную работу, если она есть в проекте. Убедитесь, что сохранённые данные переживают перезапуск и используются очередью. Старые неотправленные заявки восстанавливайте с учётом уже созданных объектов CRM, чтобы успешная авторизация не сопровождалась массовым появлением дублей.