Это действительно проблема OAuth logi c, это особенность, а не ошибка. В OAuth ваше приложение обменивается токенами refre sh на токены доступа. Жетоны доступа имеют ограниченный срок службы.
Когда вы используете токен refre sh для создания нового токена доступа, вы также получаете новый уникальный токен refre sh, и ваш скрипт сохраняет его для будущего использования, старый токен refre sh более не действительно. Точно так же, когда вы повторно авторизуете приложение, вы получаете fre sh токенов, и все ранее сгенерированные токены становятся недействительными.
Таким образом, когда вы авторизуете один скрипт, используя тот же идентификатор клиента и секрет клиента, что и другой сценария, вы получаете новый токен доступа и refre sh токен, и старые учетные данные, сохраненные другим скриптом, становятся недействительными.
В результате другой сценарий больше не может обмениваться токеном refre sh, который он сохранил, для новых токенов доступа, и он больше не работает. После повторной авторизации этой копии токен refre sh и токен доступа в другой копии становятся недействительными аналогичным образом. Таким образом, вы в конечном итоге идете по кругу.
У вас есть два варианта:
Настройка отдельного клиента OAuth (с разными идентификатором клиента и секретом клиента) для каждого сценария.
Измените свои сценарии, чтобы использовать одно и то же место хранения для токена и секретного доступа OAuth.
Первый подход даст вам самые надежные последовательные результаты. Если вы попробуете второй подход, у вас все еще могут быть случаи, когда скрипты запускаются в одно и то же время, и у одного есть действительные токены, в то время как другой пытается использовать недопустимые. (условия гонки).