vegasje/xero-oauth

Xero API 的 PHP 类

0.3.0 2014-03-11 21:41 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:54:23 UTC


README

用于与 Xero OAuth API 一起工作的 PHP 库。

简介

XeroOAuth-PHP 是一个用于与 Xero API (http://developer.xero.com) 一起使用的示例库。Xero API 使用 OAuth 1.0a,但我们不推荐将此库用于其他 OAuth 1.0a API,因为 Xero API 具有更先进的实现(RSA-SHA1、客户端 SSL 证书等),因此具有许多在其他 API 中不常用的配置选项。

此库旨在帮助开发者快速入门 OAuth 认证层,但在将其用于生产环境之前,可能需要对其实施进行一些自定义。

要求

  • PHP 5+
  • php_curl 扩展 - 确保使用最新版本(7.30+)
  • php_openssl 扩展

设置

要设置,您需要修改 _config.php 文件中的值以满足您自己的需求和应用程序设置,或者查看每个不同应用程序类型的定制示例文件,public.php、private.php 或 partner.php。使用 _config.php 文件时,如果使用非合作伙伴应用程序,则应取消注释 合作伙伴应用程序的特殊选项

使用

在处理 Xero 时,有一些函数会被使用

发送请求

请求函数是任何与 API 通信的核心。您可能希望发送多种类型的请求,所有这些请求都由 request() 函数处理。

request($method, $url, $parameters, $xml, $format)
参数
  • 方法:要使用的 API 方法(GET、PUT、POST)
  • URL:API 端点的 URL。这由一个特殊函数处理(见下文)
  • 参数:包含诸如 where、order by 等参数的关联数组(见 http://developer.xero.com/documentation/getting-started/http-requests-and-responses/
  • XML:请求数据(用于 PUT 和 POST 操作)
  • 格式:响应格式(目前支持 xml、json & pdf)。注意,PDF 不支持所有端点

生成 URL

创建一个正确格式的请求 URL。

url($endpoint, $api)
参数
  • 端点:您希望与之一起工作的端点。注意,除了 Invoices、Contacts 等各种 API 端点外,还有 OAuth 端点,例如 'RequestToken' 和 'AccessToken'。当指定资源,如 Invoices/$GUID 时,您可以通过将 GUID 添加到基本 URL 来构造请求。
  • API:有两个 API:核心(核心会计 API)和薪酬(薪酬应用程序 API)。默认为核心。

解析响应

一旦您获取了数据,您可以通过 parseResponse 函数将其传递以将其转换为可用的内容。

parseResponse($response, $format)
参数
  • 响应:要解析的原始 API 响应
  • 格式:支持 xml、pdf 和 json,但不能使用此函数将 XML API 响应解析为 JSON - 必须与请求的响应格式相对应。

授权

对于使用 3 腿 OAuth 流程的公共和合作伙伴 API 类型应用程序,我们需要将用户重定向到 Xero 以授权 API 连接。为此,请将用户重定向到使用类似以下调用的 URL

url("Authorize", '') . "?oauth_token=".$oauth_token."&scope=" . $scope;
附加信息
  • oauth_token:这是在先前的 RequestToken 调用中生成的请求令牌
  • 范围:薪酬 API 是一个受权限控制的 API,需要逗号分隔的应用程序请求访问端点的列表,例如 $scope = 'payroll.payrollcalendars,payroll.superfunds,payroll.payruns,payroll.payslip,payroll.employees';

刷新访问令牌

对于可以通过API程序刷新30分钟访问令牌的合作伙伴API应用程序,您可以使用refreshToken函数

refreshToken('the access token', 'the session handle')
参数
  • 访问令牌:当前访问令牌
  • 会话句柄:会话标识符句柄

调试

设置诊断

在设置过程中,您可能会遇到一些配置问题,特别是与一些更高级的应用类型,如合作伙伴。

为了确保您的配置正确,您可以运行诊断函数

diagnostics();

这会返回一个错误消息数组(如果有)。这些是以人类可读的形式,应该足以让您走上正确的道路。如果不是,请检查Xero开发者中心和论坛以获取更多信息。

在生产代码中运行此操作可能是个坏主意,因为返回的错误只有开发者才能解决,而不是最终用户。

运行时错误

可能遇到错误的原因有很多:数据验证、令牌问题、授权撤销等。检查HTTP响应代码的同时,也要检查相关的错误字符串。

示例代码中包含一个非常基本的错误输出函数,它会输出与错误相关的所有可用信息。在将其用于生产环境之前,需要对其进行大量整理。

outputError($object);

响应助手

了解您从API接收到的消息类型可能很有用。在每次不成功的响应中,都会返回一个助手元素

  • TokenExpired:这意味着访问令牌已过期。如果您使用的是合作伙伴API类型应用程序,可以自动更新它,或者如果您使用的是公共应用程序,则提示用户重新进行身份验证
  • TokenFatal:在这种情况下,令牌处于无法更新的状态,用户将需要重新进行身份验证
  • SetupIssue:连接的设置/配置中存在问题 - 检查诊断函数

待办事项

  • 从报告中读取值
  • 更好的WHERE和ORDER示例
  • 将OAuthsimple更改合并回RSA-SHA1父仓库

许可 & 信用

本软件根据MIT许可证发布。

OAuthSimple

OAuthsimple.php包含来自United Heroes的OAuthSimple PHP类的少量修改。

tmhOAuth

XeroOAuth类基于从tmhOAuth库中衍生出的代码和结构。

主要更改历史

0.6 - 2015年4月19日

添加了composer支持。修改了content-type,以便它也适用于PUT请求

0.5 - 2014年11月16日

添加了跟踪类别和选项的CRU示例。更新了CA证书为最新版本 - 注意,如果您使用的是非常旧的curl版本,可能会收到“证书无效”类型的错误。删除了一个未使用的函数,并对另一个函数的注释进行了整理,使其更加合理。

0.4 - 2014年9月29日

合并了一些拉取请求,解决了多个调用有签名验证问题的问题。

0.3 - 2014年1月3日

合并了许多拉取请求,整理了格式,并扩展了示例测试。

0.2 - 2013年5月13日

合并到主分支,添加了更多测试,并改进了合作伙伴API应用程序的安全性处理。

0.1 - 2013年5月10日

准备并发布了初始发布候选版,并发布到'refactor'分支。