如何授权 cron 作业 php 文件访问 Xero?
How do I authorise a cron job php file to access Xero?
我正在迁移到 Xero,并希望使用 cron 作业在特定时间每月将发票流程设置为 运行 一次,我可以启动 cron 作业并且我已经设置了 php 基于 https://github.com/XeroAPI/xero-php-oauth2-app 的页面,我可以手动 运行 并且它完美运行。
我还使用 https://github.com/XeroAPI/xoauth 检索令牌并将它们存储在钥匙串中,我可以看到它们在那里。
我有点迷路了 xoauth 说的 "Piping the access_token, id_token and refresh_token to stdout, so you can use them in a script workflow"
我希望有人做过类似的事情,可以为我指明正确的方向,或者最好给我一个例子,因为我在网上找不到。
我假设我在传输令牌值的 2 个示例之间缺少 link。
当 cron 运行s 我得到以下错误
'Fatal error: Uncaught BadMethodCallException: Required parameter not passed: "refresh_token" in /Applications/MAMP/htdocs/vendor/league/oauth2-client/src/Tool/RequiredParameterTrait.php:35'
这并不奇怪,因为据我所知我没有给它 refresh_token。
我在 Mac 上使用本地主机作为开发环境。
我从更有经验的开发人员那里看到了很多与此相关的问题,但没有答案。
谢谢戈登
感谢您的提问。我们已经得到了很多,所以我用它作为 XeroAPI community-corner
视频的基础,我将很快在这里分享该视频,该视频介绍了从 xoauth 获取 access/refresh 令牌,使 api 调用,并刷新以获取新的令牌集。
回答
您想要做的是在使用 xoauth repo. In your PHP script - plug in the access_token & xero-tenant-id (as 2 headers in your api call).
生成访问令牌之后
Authorization: "Bearer " + access_token
xero-tenant-id: tenantId
确保 API 调用 returns 您的数据。然后在您的脚本中创建一个函数,在将来 API 调用
之前执行以下操作
- 刷新新 token_set
- 将新的 token_set 保存到数据库或静态文件
- 使用 token_set 'access_token' 制作发票 API 电话
- 每 60 天至少重复一次步骤 (1-3)
NOTE: you will need some kind of persistence to store the continually
refreshed token_set.
希望这能为您澄清。我会尽快 post 支持视频以进行深入演练。
OAuth2.0 背景:
Essentially our move to simplify and standardize our API authentication came with some challenges in how to setup longstanding API connections for use cases that didn’t need to onboard an increasing number of new users. For instance, a lot of small businesses and accounting firms setup custom processes to batch import/export invoices.
The use case often did not have the need for an application user interface, so standing one up just to get a valid access token was a lot of extra work if the integration only needed to connect to single ‘admin’ type user for a specific Xero Organisation.
我正在迁移到 Xero,并希望使用 cron 作业在特定时间每月将发票流程设置为 运行 一次,我可以启动 cron 作业并且我已经设置了 php 基于 https://github.com/XeroAPI/xero-php-oauth2-app 的页面,我可以手动 运行 并且它完美运行。
我还使用 https://github.com/XeroAPI/xoauth 检索令牌并将它们存储在钥匙串中,我可以看到它们在那里。
我有点迷路了 xoauth 说的 "Piping the access_token, id_token and refresh_token to stdout, so you can use them in a script workflow"
我希望有人做过类似的事情,可以为我指明正确的方向,或者最好给我一个例子,因为我在网上找不到。
我假设我在传输令牌值的 2 个示例之间缺少 link。
当 cron 运行s 我得到以下错误
'Fatal error: Uncaught BadMethodCallException: Required parameter not passed: "refresh_token" in /Applications/MAMP/htdocs/vendor/league/oauth2-client/src/Tool/RequiredParameterTrait.php:35'
这并不奇怪,因为据我所知我没有给它 refresh_token。
我在 Mac 上使用本地主机作为开发环境。
我从更有经验的开发人员那里看到了很多与此相关的问题,但没有答案。
谢谢戈登
感谢您的提问。我们已经得到了很多,所以我用它作为 XeroAPI community-corner
视频的基础,我将很快在这里分享该视频,该视频介绍了从 xoauth 获取 access/refresh 令牌,使 api 调用,并刷新以获取新的令牌集。
回答
您想要做的是在使用 xoauth repo. In your PHP script - plug in the access_token & xero-tenant-id (as 2 headers in your api call).
生成访问令牌之后Authorization: "Bearer " + access_token
xero-tenant-id: tenantId
确保 API 调用 returns 您的数据。然后在您的脚本中创建一个函数,在将来 API 调用
之前执行以下操作- 刷新新 token_set
- 将新的 token_set 保存到数据库或静态文件
- 使用 token_set 'access_token' 制作发票 API 电话
- 每 60 天至少重复一次步骤 (1-3)
NOTE: you will need some kind of persistence to store the continually refreshed token_set.
希望这能为您澄清。我会尽快 post 支持视频以进行深入演练。
OAuth2.0 背景:
Essentially our move to simplify and standardize our API authentication came with some challenges in how to setup longstanding API connections for use cases that didn’t need to onboard an increasing number of new users. For instance, a lot of small businesses and accounting firms setup custom processes to batch import/export invoices.
The use case often did not have the need for an application user interface, so standing one up just to get a valid access token was a lot of extra work if the integration only needed to connect to single ‘admin’ type user for a specific Xero Organisation.