Интеграции
amoCRM перестала работать после истечения токена
amoCRM работает после подключения, а затем перестаёт принимать запросы. Разберём обновление токенов и причины, по которым ручное переподключение помогает ненадолго.
Что происходит и с чего начать
Токен доступа имеет ограниченный срок действия. Интеграция должна получать следующий токен предусмотренным способом и сохранять актуальные данные для последующих запросов. Если этот механизм не работает, ручное подключение временно возвращает обмен, но через время отказ повторяется. Поэтому важно проверить именно цикл обновления, а не просто заменить значение в настройках. Также учитывают несколько процессов: сайт и очередь могут использовать разные сохранённые версии или одновременно пытаться обновить один набор данных доступа.
Что можно проверить самостоятельно
- Запишите время успешного подключения и первого отказа. Уточните, повторяется ли проблема через похожий интервал или только после публикации, перезапуска и запуска нескольких заданий.
- Проверьте, ломаются все операции или только очередь. Сохраните безопасный текст ошибки, исключив токены и коды авторизации из переписки и снимков экрана.
- Сообщите, где ещё используется это подключение: основной сайт, тестовая копия, внешняя автоматизация. Не копируйте действующие секреты между окружениями без согласования их назначения.
Как понять результаты проверки
Специалист проверяет получение, запись и согласованное обновление токенов по правилам amoCRM. Важно хранить актуальную пару данных и не затирать её устаревшим результатом параллельного процесса. Если авторизация отозвана, требуется другое восстановление, чем при обычном истечении срока. Программа должна различать эти состояния и ограничивать повторы. Секреты не должны попадать в журнал целиком: для диагностики достаточно времени, типа операции и безопасной части ответа, позволяющей связать отказ с конкретным этапом обновления.
Что проверяет разработчик
Для этой части понадобятся доступ к настройкам, журналам ошибок или коду. Её можно передать специалисту вместе с результатами предыдущих шагов.
- Найдите первый отказ и ответ запроса обновления. Сверьте домен аккаунта и параметры интеграции с используемым окружением.
- Проверьте, сохраняются ли новые токены после успешного обновления. Запись должна быть доступна всем процессам, использующим интеграцию.
- Сопоставьте одновременные запросы worker и веба. Два процесса могут попытаться обновить доступ по одному старому состоянию и перезаписать результат.
На что обратить внимание
Интеграция может обновить access token в памяти одного процесса, но оставить прежние данные в постоянном хранилище. После перезапуска или следующего запроса ошибка возвращается.
Как исправляют причину
Сериализуйте обновление для одного аккаунта и сохраняйте согласованный набор данных атомарно. При окончательном отзыве доступа выполните предусмотренную повторную авторизацию, а не бесконечный цикл повторов.
Как убедиться, что проблема решена
На тестовой интеграции проверьте обновление и последующий запуск другого процесса. После восстановления сверяйте недоставленные заявки перед повторной отправкой, чтобы не создать дубли.
После исправления проверьте не только первый запрос, но и автоматическое обновление доступа в контролируемых условиях. Затем протестируйте обычную параллельную работу, если она есть в проекте. Убедитесь, что сохранённые данные переживают перезапуск и используются очередью. Старые неотправленные заявки восстанавливайте с учётом уже созданных объектов CRM, чтобы успешная авторизация не сопровождалась массовым появлением дублей.