use*_*749 14 php codeigniter invoices xero-api
我想在php中将xero api集成到公共应用程序中.我坚持使用oauth应用程序授权我从github下载代码 https://github.com/XeroAPI/XeroOAuth-PHP(在公共应用程序的xero api代码示例中找到)
我正在使用以下代码:
require('/../lib/XeroOAuth.php');
require('/../_config.php');
$useragent = "Xero-OAuth-PHP Public";
$signatures = array (
'consumer_key' => 'app_consumre_key',
'shared_secret' => 'app_secret_key',
'core_version' => '2.0'
);
$XeroOAuth = new XeroOAuth ( array_merge ( array (
'application_type' => XRO_APP_TYPE,
'oauth_callback' => OAUTH_CALLBACK,
'user_agent' => $useragent
), $signatures ) );
include 'tests.php';
Run Code Online (Sandbox Code Playgroud)
我正在传递以下xml数据:
$xml = "<Invoices>
<Invoice>
<Type>ACCREC</Type>
<Contact>
<Name>Martin Hudson</Name>
</Contact>
<Date>2013-05-13T00:00:00</Date>
<DueDate>2013-05-20T00:00:00</DueDate>
<LineAmountTypes>Exclusive</LineAmountTypes>
<LineItems>
<LineItem>
<Description>Monthly rental for property at 56a Wilkins Avenue</Description>
<Quantity>4.3400</Quantity>
<UnitAmount>395.00</UnitAmount>
<AccountCode>200</AccountCode>
</LineItem>
</LineItems>
</Invoice>
</Invoices>";
$params = array (
'oauth_callback' => OAUTH_CALLBACK
);
$response1 = $XeroOAuth->request ( 'GET', $XeroOAuth->url ( 'RequestToken', '' ), $params );
if ($XeroOAuth->response ['code'] == 200)
{
$outhtoken = $XeroOAuth->response ['response'];
$oauth_exp = explode('&',$outhtoken);
$oauth_exp_token = explode('=',$oauth_exp[1]);
$oauth_token = $oauth_exp_token[1];
}
Run Code Online (Sandbox Code Playgroud)
首先,我是oauth令牌,并传递到oauth invoice url
$response = $XeroOAuth->request('POST', $XeroOAuth->url('Invoices', 'core'), array('oauth_token'=>$oauth_token), $xml);
Run Code Online (Sandbox Code Playgroud)
现在我得到了401 error
响应,oauth令牌不匹配
我在做什么错?
如果您在使用 Xero 时遇到 OAuth 错误,他们的OAuth 问题文章有助于提供可能的解决方案。也就是说,没有提到“令牌不匹配”——我也无法在 Xero 社区中找到该错误的参考资料。
根据您发布的内容,第一个问题是您是否已完成 OAuth 流程?共有三个主要步骤(获取请求令牌、用户授权、获取访问令牌),上面的示例仅显示第一步。您引用的public.php文件包含所有步骤。
如果您的 OAuth 流程运行顺利,请确保 OAuth 访问令牌和密钥随您的请求一起传递(示例请求中仅显示令牌)。您可以在 XeroOAuth 对象中设置这些,因此最终请求可能如下所示
$XeroOAuth->config ['access_token'] = $oauth_token;
$XeroOAuth->config ['access_token_secret'] = $oauth_token_secret;
$XeroOAuth->request('POST', $XeroOAuth->url('Invoices', 'core'), array(), $xml);
Run Code Online (Sandbox Code Playgroud)
我根据演示 OAuth 和创建发票的 XeroOauth-PHP public.php 制定了完整流程的要点。