我正在尝试将我公司的在线商店(用 php/Laravel 编写)与 Xero 集成,这样我就可以为每个订单创建发票。为此,我创建了一个私有 Xero 应用程序,生成了 Oauth 身份验证所需的证书并将其添加到 Xero 应用程序中,这样我现在就拥有了我的消费者密钥和秘密。
我查看了官方的 php 包装器,发现它非常过时且不适合集成到我的应用程序中,因此,鉴于 Xero 交互量很小,我想我会尝试直接调用 API。
我正在使用 Guzzle 和 Guzzle Oauth 订阅者,但正在努力发送经过正确身份验证的请求。
鉴于我的 Xero 应用程序是私有的,以下段落应适用于我的请求(如 Xero 开发区所述):
注意,对于私有应用程序,消费者令牌和秘密也用作访问令牌和秘密。
所以我像这样建立请求:
$stack = HandlerStack::create();
$middleware = new Oauth1([
'consumer_key' => config('services.xero.key'),
'consumer_secret' => config('services.xero.secret'),
'signature_method' => Oauth1::SIGNATURE_METHOD_RSA,
]);
$stack->push($middleware);
$client = new Client([
'base_uri' => 'https://api.xero.com/api.xro/2.0/',
'handler' => $stack,
]);
$res = $client->request('GET', 'Contacts');
dd($res);
但是我得到以下异常:
[GuzzleHttp\Exception\ClientException]
客户端错误:GET https://api.xero.com/api.xro/2.0/Contacts
导致401 Unauthorized
响应:
oauth_problem=consumer_key_unknown&oauth_problem_advice=Consumer%20key%20was%20not%20recognised
据我所知,我已经正确设置了 Xero 应用程序并生成了消费者密钥和秘密,但我似乎无法调试它。
关于如何提出适当请求的任何建议?