Trello OAuth работает только с одним скриптом Google Apps - PullRequest
1 голос
/ 10 января 2020

Фон

  • Я могу создавать карты Trello из Google Apps Script через API Trello с помощью библиотеки OAuth 1.0. Принцип доказан / код работает.
  • У меня есть два разных проекта Сценариев Google Apps, которые должны иметь возможность создавать карты Trello.
  • Код в двух разных Сценариях / Проектах приложений идентичен - включая тот же API-ключ / секрет.
  • Только один Сценарий Служб создаст карту Trello. Это моя проблема.
  • Если я повторно авторизую другой Сценарий Служб, этот сценарий будет работать, а другой даст мне API возврат «неверного токена» и наоборот. Только один работает за один раз, но мне нужны оба для работы.

Мои мысли

  • Я думаю, что Trello, через OAuth, видит каждый Apps Script - это отдельный проект.
  • Я думаю, что из-за этого он не позволит обоим приложениям использовать один и тот же ключ / секрет API для работы с моей учетной записью Trello. Похоже, что только один проект может использовать ключ / секрет.
  • Если это так, я не знаю, как сделать каждый скрипт скрипта приложений своим собственным проектом для API Trello, который будет работать для обоих одновременно.

Требуется помощь

Кто-нибудь знает, как сделать эту работу? Мне нужны оба сценария, чтобы создавать карты Trello. У меня есть ощущение, что каждое приложение должно идентифицировать себя уникально, но я, честно говоря, понятия не имею.

1 Ответ

2 голосов
/ 10 января 2020

Это действительно проблема OAuth logi c, это особенность, а не ошибка. В OAuth ваше приложение обменивается токенами refre sh на токены доступа. Жетоны доступа имеют ограниченный срок службы.

Когда вы используете токен refre sh для создания нового токена доступа, вы также получаете новый уникальный токен refre sh, и ваш скрипт сохраняет его для будущего использования, старый токен refre sh более не действительно. Точно так же, когда вы повторно авторизуете приложение, вы получаете fre sh токенов, и все ранее сгенерированные токены становятся недействительными.

Таким образом, когда вы авторизуете один скрипт, используя тот же идентификатор клиента и секрет клиента, что и другой сценария, вы получаете новый токен доступа и refre sh токен, и старые учетные данные, сохраненные другим скриптом, становятся недействительными.

В результате другой сценарий больше не может обмениваться токеном refre sh, который он сохранил, для новых токенов доступа, и он больше не работает. После повторной авторизации этой копии токен refre sh и токен доступа в другой копии становятся недействительными аналогичным образом. Таким образом, вы в конечном итоге идете по кругу.

У вас есть два варианта:

  • Настройка отдельного клиента OAuth (с разными идентификатором клиента и секретом клиента) для каждого сценария.

  • Измените свои сценарии, чтобы использовать одно и то же место хранения для токена и секретного доступа OAuth.

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

...