【问题标题】:How do I authorise a cron job php file to access Xero?如何授权 cron 作业 php 文件访问 Xero?
【发布时间】:2020-04-11 18:30:39
【问题描述】:

我正在迁移到 Xero,并希望使用 cron 作业将发票流程设置为每月在特定时间运行一次,我可以启动 cron 作业,并且我已经设置了一个基于 https://github.com/XeroAPI/xero-php-oauth2-app 的 php 页面我可以手动运行,而且效果很好。

我还使用https://github.com/XeroAPI/xoauth 检索令牌并将它们存储在钥匙串中,我可以看到它们在那里。

xoauth 说“将 access_token、id_token 和 refresh_token 通过管道传输到标准输出,以便您可以在脚本工作流程中使用它们”,我有点迷失了。

我希望有人做过类似的事情,可以为我指明正确的方向,或者更好地给我一个例子,因为我在网上找不到。

我假设我缺少传输令牌值的 2 个示例之间的链接。

当 cron 运行时出现以下错误

'致命错误:未捕获的 BadMethodCallException:未传递必需参数:/Applications/MAMP/htdocs/vendor/league/oauth2-client/src/Tool/RequiredParameterTrait.php:35 中的“refresh_token”

这并不奇怪,因为据我所知,我没有给它一个 refresh_token。

我在 Mac 上使用 localhost 作为开发环境。

我从更有经验的开发人员那里看到了许多与此相关的问题,但没有答案。

谢谢戈登

【问题讨论】:

  • Hey Gordon - 视频已经上线,如果这能让你排序,请告诉我:youtube.com/watch?v=Zcf_64yreVI
  • 非常有帮助,我已经决定让事情变得比它需要的更复杂,我现在改变了策略并认为以下是有意义的: 1. 创建 Mysql 数据库来保存连接令牌. 2. 手动填充它以开始使用 Xoauth。 3. 每个月加载页面时,刷新令牌并将新值保存到数据库中,并用于 API 调用。这有意义吗?还是你会提出其他建议?
  • 成功了!很高兴为您排序。一旦你实现了它,请随时给我发消息很想听听你的脚本。 Chris.knight@xero.com

标签: php oauth-2.0 xero-api


【解决方案1】:

感谢您的提问。我们已经得到了很多,所以我用它作为 XeroAPI community-corner 视频的基础,我将很快在此处分享,该视频将介绍从 xoauth 获取访问/刷新令牌、进行 api 调用以及刷新以获取新令牌设置。

回答

您要做的是在使用 xoauth 存储库生成访问令牌之后。在您的 PHP 脚本中 - 插入 access_token 和 xero-tenant-id (as 2 headers in your api call)

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

确保 API 调用返回您的数据。然后在您的脚本中创建一个函数,在未来的 API 调用之前执行以下操作

  1. 刷新新的令牌集
  2. 将新的 token_set 保存到数据库或静态文件中
  3. 使用该 token_set 'access_token' 进行 Invoice API 调用
  4. 至少每 60 天重复步骤 (1-3) 一次

注意:您将需要某种持久性来持续存储 刷新了 token_set。

希望这可以为您澄清。我会尽快发回视频以进行深入演练。

OAuth2.0 背景:

基本上,我们简化和标准化 API 身份验证的举措带来了一些挑战,即如何为不需要增加新用户数量的用例设置长期 API 连接。例如,许多小型企业和会计师事务所设置自定义流程来批量导入/导出发票。

该用例通常不需要应用程序用户界面,因此如果集成只需要连接到单个“管理员”类型的用户一个特定的 Xero 组织。

【讨论】:

  • 谢谢克里斯托弗,我想我会等待视频,因为这样可以更容易地看出我哪里出错了。
  • 这是否意味着我可以复制作为 Windows 服务运行的当前操作方法(在我的客户销售点系统和 Xero 之间进行无人值守交互的 Windows 服务)?单个组织的私有应用程序。
  • @Droopsnoot - 是的!强烈建议迁移到 OAuth2.0。根据您的架构,您可能需要利用 PKCE developer.xero.com/documentation/oauth2/pkce-flow - 发送电子邮件至 api@xero.com,我们可以指导您找到正确的解决方案
  • 好的。我一直在开发者网站上查看示例应用程序,但似乎没有什么能让我像现在这样完全在后台工作。我缺乏 .net 核心(和 c#)知识只会让整个事情看起来非常困难。
  • 感谢克里斯托弗的视频,它向我强调了通过使用 github.com/XeroAPI/xero-php-oauth2-app 作为项目的基础,我使过程过于复杂,如果我只是在几页中编写代码就简单得多并将令牌存储在数据库中。
猜你喜欢
  • 2015-09-27
  • 1970-01-01
  • 2015-09-25
  • 1970-01-01
  • 2023-03-08
  • 1970-01-01
  • 2012-04-23
  • 2021-02-02
  • 1970-01-01
相关资源
最近更新 更多