codeigniter 用于公共类型应用程序PHP中的xero api集成

dfddblmv  于 2022-12-07  发布在  PHP
关注(0)|答案(2)|浏览(170)

我想在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';

我正在传递以下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];    
}

首先我是oauth令牌,并传入oauth发票url

$response = $XeroOAuth->request('POST', $XeroOAuth->url('Invoices', 'core'),  array('oauth_token'=>$oauth_token), $xml);

现在我得到的响应是401 error,oauth令牌不匹配
我犯了什么错?

5tmbdcev

5tmbdcev1#

如果你在使用Xero时遇到OAuth错误,他们的OAuth Issues article可以帮助你提供一个可能的解决方案。也就是说,“令牌不匹配”没有被提到--我也没有在Xero社区中找到关于这个错误的参考。
根据你发布的内容,第一个问题是你是否已经完成了OAuth过程?有三个主要步骤(获取请求令牌、用户授权、获取访问令牌),而你上面的例子只显示了第一步。你引用的public.php文件包含了所有步骤。
如果OAuth进程运行顺利,请确保OAuth访问令牌和密码与请求一起传递(示例请求中只显示令牌)。

$XeroOAuth->config ['access_token'] = $oauth_token;
$XeroOAuth->config ['access_token_secret'] = $oauth_token_secret; 
$XeroOAuth->request('POST', $XeroOAuth->url('Invoices', 'core'),  array(), $xml);

我已经使用基于XeroOauth-PHP public.php的完整过程制作了a gist,该过程演示了OAuth和创建发票。

juzqafwq

juzqafwq2#

Xero不再支持oAuth 1.0

并且您必须使用最新的Git集线器Repo和Xero OAuth 2.0 https://github.com/XeroAPI/xero-php-oauth2

相关问题