2014-10-08 19 views
14

Voglio integrare xero api per l'applicazione pubblica in php. mi sono bloccato con l'autorizzazione applicazione OAuth Ho codice per il download da github https://github.com/XeroAPI/XeroOAuth-PHP (ricerca xero esempio di codice API per applicazioni pubblico)
Sto usando seguente codice:integrazione xero api in php per un'applicazione di tipo pubblico

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'; 

sto passando seguenti dati 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];  
}  

Prima sono token OAuth, e passando in OAuth fattura url

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

Ora ricevo 401 error in risposta, mancata corrispondenza di token oauth

Che errore sto facendo?

+2

Suggerisco invece di utilizzare questa libreria. In realtà è mantenuto attivamente, ben strutturato, facile da debug e l'autore ascolta effettivamente: https://github.com/calcinai/xero-php La libreria php ufficiale fornita da xero è ... * morde lingua * ... non bene. – Gerry

risposta

1

Se si verificano errori OAuth con Xero, il loro OAuth Issues article è utile per fornire una possibile soluzione. Detto questo, "mancata corrispondenza del token" non è menzionato - né potrei trovare un riferimento all'errore nella comunità Xero.

In base a ciò che hai pubblicato, la prima domanda è se hai completato il processo OAuth? Ci sono tre passaggi principali (ottenere un token di richiesta, l'autorizzazione dell'utente, ottenere un token di accesso) e l'esempio sopra mostra solo il primo passo. Il file public.php a cui si è fatto riferimento contiene tutti i passaggi.

Se il processo OAuth si svolge senza intoppi, assicurati che il token di accesso OAuth e il segreto siano passati con la tua richiesta (solo il token è mostrato nella richiesta di esempio). È possibile impostare questi nell'oggetto XeroOAuth, quindi la richiesta finale potrebbe sembrare

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

Ho fatto a gist con il processo completo base al largo la public.php XeroOauth-PHP, che dimostra sia OAuth e la creazione di una fattura.