2017-04-12 46 views
0

當我使用'郵遞員'運行Quickbooks Online API時,它工作正常。郵差自動生成nonce和oauth_signature的值。但是當我使用PHP運行API時,我遇到了以下錯誤。Quickbooks Online API中的ApplicationAuthenticationFailed錯誤

message = ApplicationAuthenticationFailed;錯誤碼= 003200; 的StatusCode = 401 SignatureBaseString:POST & HTTPS%3A%2F%2Fsandbox-quickbooks.api.intuit.com%2Fv3%2Fcompany%2F193514525%2Faccount & oauth_consumer_key%3DqyprdH7kq5iG34sV2fSaj9tKC1KzXG%26oauth_nonce%3DFWXxbP%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1491976910 %26oauth_token%3DqyprdDXeKDQonYAz8O0OSnyewIsg34HjxZyH0X4Dk5dNE5LC%26oauth_version%3D1.0

我認爲這可能與產生簽名值。我已經使用PHP'$ oauth-> generateSignature()'函數來生成簽名。它會產生價值。但授權錯誤仍然存​​在。請幫我解決這個問題。

這裏我提供了我使用的代碼。

$ar = array(
'authorization: OAuth oauth_consumer_key="'.OAUTH_CONSUMER_KEY.'",oauth_token="'.ACCESS_TOKEN_SECRET.'",oauth_signature_method="HMAC-SHA1",oauth_timestamp="'.$time.'",oauth_nonce="'.$randomvalue.'",oauth_version="1.0",oauth_signature="'.$signaturevalue.'"', 
"cache-control: no-cache", 
"content-type: application/json", 
"Accept: application/json" 

);

$curl = curl_init(); 
curl_setopt_array($curl, array(
CURLOPT_URL => "https://sandbox- quickbooks.api.intuit.com/v3/company/{{companyid}}/account", 
CURLOPT_RETURNTRANSFER => true, 
CURLOPT_ENCODING => "", 
CURLOPT_MAXREDIRS => 10, 
CURLOPT_TIMEOUT => 30, 
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
CURLOPT_CUSTOMREQUEST => "POST", 
CURLOPT_POSTFIELDS => "{\n \"AccountType\": \"Accounts Receivable\",\n \"Name\": \"MyJobs\"\n}", 
CURLOPT_HTTPHEADER => $ar, 
)); 
$response = curl_exec($curl); 

這是我用於創建帳戶的代碼。 我用下面的代碼來生成簽名。

$oauth = new OAuth(OAUTH_CONSUMER_KEY,OAUTH_CONSUMER_SECRET); 
    $signature = $oauth->generateSignature('POST','https://sandbox-quickbooks.api.intuit.com/v3',$params); 

在定義這種情況下,$參數數組如下

 $params = array(
     'oauth_consumer_key' => OAUTH_CONSUMER_KEY, 
     'oauth_nonce' => $randomvalue, 
     'oauth_signature_method' => 'HMAC-SHA1', 
     'oauth_timestamp' => $time, 
     'oauth_version' => '1.0', 
     'oauth_token' => ACCESS_TOKEN 
    ); 
+0

投票關閉問題已經被問過了,你沒有提供任何代碼,這樣我們實際上可以複製/幫助你在這裏。 –

+0

@KeithPalmerJr。對不起,不提供代碼。在這裏,我編輯我的問題,包括代碼。輕鬆進行查看? –

回答

1

應使用能處理所有的這些東西對你庫 - 有很多的問題,在你的代碼。下面是處理所有這一切對你的庫文件:

請按照頁面上的快速啓動。

的具體問題我可以用你的代碼中看到:

你不能有一個恆定的訪問令牌。它改變了每5〜6個月,因此不是一個常量: 「 'ACCESS_TOKEN_SECRET'」

的oauth_token =

這個網址有兩個問題:

  • 它在它的空間
  • 公司ID是一個整數,在這裏它看起來像你把一個佔位符,而不是

CURLOPT_URL =>「https://sandbox- quickbooks.api.intuit。COM/V3 /公司/ {{companyid}} /帳戶」,

此URL不正確 - 在您登入不同的URL比你張貼到:

$簽名= $ oauth-> generateSignature(「POST」,「https://sandbox-quickbooks.api.intuit.com/v3」,$ params)方法。

+0

謝謝基思。您的支持幫助我解決了這個問題。你提供的圖書館非常有幫助。 –

相關問題