Как разрешить файлу задания php cron для доступа к Xero? - PullRequest
1 голос
/ 11 апреля 2020

Я мигрирую в Xero и хочу настроить процесс выставления счетов на запуск один раз в месяц в определенное время c, используя задание cron, я могу запустить задание cron и настроил страницу php на основе https://github.com/XeroAPI/xero-php-oauth2-app, который я могу запустить вручную, и он отлично работает.

Я также использовал https://github.com/XeroAPI/xoauth, чтобы получить токены и сохранить их в цепочка для ключей, я вижу, что они есть.

Я немного заблудился, когда xoauth говорит: «Передача access_token, id_token и refresh_token в stdout, так что вы можете использовать их в рабочем процессе сценария»

Я надеюсь, что кто-то сделал что-то подобное и может указать мне правильное направление или, что еще лучше, привести пример, поскольку я не могу найти один в Интернете.

Я предполагаю, что мне не хватает связи между 2 примера, которые передают значения токена.

Когда cron запускается, я получаю следующую ошибку

'Неустранимая ошибка: Uncaught BadMethodCallException: Обязательный параметр не передан: "refresh_token" в / Applications / MAMP / htdocs / vendor / league / oauth2-client / src / Tool / RequiredParameterTrait. php: 35 '

, что на самом деле не является сюрпризом, поскольку, насколько я вижу, я не дам ему refresh_token.

Я использую localhost на Ma c в качестве среды разработки.

Я видел ряд вопросов, связанных с этим от более опытных разработчиков, но ответов нет.

Спасибо, Гордон

1 Ответ

1 голос
/ 16 апреля 2020

спасибо за ваш вопрос. Мы получили это очень много, поэтому я использовал его в качестве основы для видео XeroAPI community-corner, которое я скоро опубликую здесь, которое посвящено получению токенов доступа / refre sh от xoauth, совершению вызовов API и обновлению для получения новый набор токенов.

Ответ

Что вы хотите сделать, это после того, как вы сгенерируете токен доступа с репо xoauth . В вашем скрипте PHP вставьте access_token & xero-tenant-id (как 2 заголовка в вашем вызове API) .

Authorization: "Bearer " + access_token
xero-tenant-id: tenantId

Убедитесь, что вызов API возвращает ваши данные. Затем создайте в своем скрипте функцию, которая выполняет следующие действия перед вызовами API в будущем

  1. Обновление для нового набора токенов
  2. Сохранение нового набора токенов в БД или в файл c файл
  3. Используйте этот token_set 'access_token', чтобы сделать вызов API Invoice
  4. Повторять шаг (1-3) не реже одного раза в 60 дней

ПРИМЕЧАНИЕ. : вам понадобится какая-то настойчивость для хранения постоянно обновляемого набора токенов.

Надеюсь, это прояснит это для вас. Я опубликую видео для более подробного ознакомления.

OAuth2.0 Справочная информация:

По сути, наш шаг по упрощению и стандартизации нашей аутентификации API сопряжен с некоторыми трудностями в том, как настроить давние соединения API для тех случаев использования, которым не нужно подключать все большее число новых пользователей. Например, многие малые предприятия и бухгалтерские фирмы настраивают настраиваемые процессы для пакетирования счетов-фактур импорта / экспорта.

В сценарии использования часто не было необходимости в пользовательском интерфейсе приложения, поэтому стоит просто встать, чтобы получить допустимый токен доступа потребовал много дополнительной работы, если интеграция требовалась только для подключения к одному пользователю типа «администратор» для определенной c Xero Organization.

...