Как включить Zapier OAuth 2.0 Refresh Token Flow с помощью RingCentral API

Я построил интеграцию Zapier, используя встроенную реализацию Zapier OAuth 2.0 с API RingCentral. Интеграция хорошо работает для запуска диалогового окна OAuth 2.0, получения токена доступа и вызова необходимого API. Однако обновление токена не работает, поэтому через 1 час API возвращают ошибку неавторизованного пользователя, и пользователю требуется снова войти в систему. 1 час - это довольно много времени, поэтому отладка после повторного входа вручную выполняется медленно.

Мне не удалось найти журнал Zapier для потока API обновления токена, поэтому я не могу сказать, вызывается ли он, и если да, то каков результат и сообщение об ошибке.

Как можно включить поток токенов обновления и есть ли способ отладить рабочий процесс токенов обновления, выполняемый Zapier?

Вот информация о Zapier для потока OAuth 2.0:

https://platform.zapier.com/docs/oauth#add-access-token-request-and-refresh-token-request-urls

Вот информация об API RingCentral для потока токенов обновления:

https://developers.ringcentral.com/api-reference/Get-Token

Вот как выглядит пользовательский интерфейс запроса обновления токена Zapier OAuth 2.0 с информацией API RingCentral:

введите описание изображения здесь


person Grokify    schedule 23.02.2021    source источник


Ответы (1)


Требуется базовая аутентификация

Я нашел это. Отсутствующее требование для RingCentral API из реализации Zapier OAuth по умолчанию - это базовая аутентификация в потоке обновления токена. Zapier включает заголовок Basic Auth Authorization для начального потока кода авторизации, но не для потока токенов обновления.

Я закончил предварительное вычисление поля заголовка Authorization и вручную вставил его в запрос потока обновления токена с помощью Switch to Code Mode, где я добавил заголовок Authorization следующим образом:

const options = {
  url: 'https://platform.ringcentral.com/restapi/oauth/token',
  method: 'POST',
  headers: {
    'content-type': 'application/x-www-form-urlencoded',
    'accept': 'application/json',
    'Authorization': 'Basic <Base64EncodedClientIdAndClientSecret>'
  },
  params: {

  },
  body: {
    'refresh_token': bundle.authData.refresh_token,
    'grant_type': 'refresh_token'
  }
}

Base64 используется для кодирования следующего:

process.env.CLIENT_ID + ':' + process.env.CLIENT_SECRET

Сначала я установил Authorization на следующее, но получил ошибку Zapier, что btoa не определено.

'Basic ' + btoa(process.env.CLIENT_ID+':'+process.env.CLIENT_SECRET)

Время цикла тестирования

Мне удалось уменьшить время обновления для тестирования, жестко закодировав значение access_token_ttl до минимального значения 600 секунд (10 минут) по сравнению со значением по умолчанию 3600 секунд (1 час).

Журналы обновления токенов Zapier

Я все еще не могу найти журналы Zapier для потока токенов обновления Zapier.

Без возможности увидеть, действительно ли Zapier отправляет запросы на обновление токена, способ проверить это - установить временный URL-адрес обновления токена на URL-адрес мониторинга, такой как RequestBin.

person Grokify    schedule 23.02.2021