2014-10-08 16 views
14

Ich möchte Xero API für öffentliche Anwendung in PHP integrieren. ich stecke mit oauth Anwendung Genehmigung Ich habe Downloadcode von Github https://github.com/XeroAPI/XeroOAuth-PHP (finden auf xero api Codebeispiel für die öffentliche Anwendung)
ich folgenden Code verwenden:Xero API-Integration in PHP für eine öffentliche Anwendung

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

Ich bin vorbei XML-Daten folgend:

$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];  
}  

Zuerst bin ich OAuth-Token, und Übergang in oauth Rechnung url

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

Jetzt bekomme ich 401 error als Antwort, oauth Token nicht übereinstimmen

Welchen Fehler mache ich?

+2

Ich empfehle, stattdessen diese Bibliothek zu verwenden. Es ist tatsächlich aktiv gepflegt, gut strukturiert, einfach zu debuggen und der Autor hört tatsächlich zu: https://github.com/calcinai/xero-php Die offizielle PHP-Bibliothek von Xero bereitgestellt wird ... * beißt Zunge * ... nicht gut. – Gerry

Antwort

1

Wenn Sie OAuth-Fehler mit Xero erhalten, ist ihre OAuth Issues article hilfreich, um eine mögliche Lösung bereitzustellen. Das heißt, "Token-Mismatch" wird nicht erwähnt - und ich könnte auch keinen Hinweis auf den Fehler in der Xero-Community finden.

Basierend auf dem, was Sie gepostet haben, ist die erste Frage, ob Sie den OAuth-Prozess abgeschlossen haben? Es gibt drei Hauptschritte (Holen Sie ein Anforderungs-Token, Benutzerautorisierung, erhalten Sie ein Zugriffs-Token) und Ihr Beispiel oben zeigt nur den ersten Schritt. Die Datei public.php, auf die Sie verwiesen haben, enthält alle Schritte.

Wenn der OAuth-Prozess problemlos ausgeführt werden kann, vergewissern Sie sich, dass das OAuth-Zugriffstoken und das Geheimnis mit Ihrer Anforderung übergeben werden (nur das Token wird in Ihrer Beispielanforderung angezeigt). Sie können diese in dem XeroOAuth Objekt festgelegt, so dass die endgültige Anfrage wie

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

ich mit dem gesamten Prozess a gist Basis hergestellt habe den XeroOauth-PHP public.php aussehen könnte, die sowohl OAuth und die Schaffung eine Rechnung zeigt.