2016-04-22 32 views
0

我通常使用PHP SDK,它運行良好。但是,我需要調用一個當前不可用的資源,這個資源能夠按照https://developer.intuit.com/docs/api/accounting/invoice如何使用CURL和PHP對Quickbooks Online API進行身份驗證

拉入PDF發票。因此我需要通過基本URL進行連接。現在,這是我用來連接到我自己的公司帳戶的應用程序。我通過oAuth Playground生成所有憑據並每180天手動更新一次。這是我的嘗試:

$url = "https://quickbooks.api.intuit.com/v3/company/123456/invoice/8661/pdf"; 
$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array("OAuth oauth_token:*******", 
              "oauth_nonce:******", 
              "oauth_consumer_key:*****", 
              "oauth_signature_method:HMAC-SHA1", 
              "oauth_timestamp:1461326602", 
              "oauth_version:1.0", 
              "oauth_signature:******")); 
curl_setopt($curl, CURLOPT_VERBOSE, TRUE); 
$result = curl_exec ($curl); 
print $result; 

這是響應:

< HTTP/1.1 400 Illegal character 0x20 
< Server: nginx 
< Date: Fri, 22 Apr 2016 11:58:59 GMT 
< Content-Length: 0 
< Connection: keep-alive 
< Keep-Alive: timeout=5 

我甚至不知道如果我使用所有正確的密鑰和令牌。我使用了我成功用於PHP SDK工作的相同值。

如果有人能告訴我我做錯了什麼,我將不勝感激。謝謝。

+0

檢查你的/etc/nginx/nginx.conf嘗試修改keep_alive&client_max_body_size完成後重新啓動nginx。應該工作 –

回答

1

你必須使用OAuth簽署您的要求,每個文檔:

https://developer.intuit.com/docs/0100_accounting/0060_authentication_and_authorization

如果你想與捲曲要做到這一點,你必須實現OAuth規格:

http://oauth.net/core/1.0a/

只是在您的示例代碼中完成硬編碼將不起作用。您必須使用OAuth簽名算法爲每個請求計算的OAuth簽名。

如果您不想自己做這個,請嘗試使用已經爲您提供此功能的庫。例如,OAuth的庫:

http://php.net/manual/en/book.oauth.php

或實際QuickBooks的在線+ PHP LIB,提供您需要的功能(聲明 - 我是作者):

https://github.com/consolibyte/quickbooks-php

具體地,下載PDF文件:

+0

謝謝。我一直在試圖安裝這個庫,但是我遇到了困難,因爲這裏的說明已經過時了嗎? http://www.consolibyte.com/docs/index.php/PHP_DevKit_for_QuickBooks_-_Intuit_Partner_Platform_Quick-Start。特別是它詢問了一個DSN。對我來說這意味着QB的Windows版本,但我可能是錯的。 – user2029890

+0

我一直在閱讀更多的論壇。我正在使用生產密鑰(與官方SDK配合使用)。有什麼配置文件應該看起來像一個工作的例子?我不確定數據庫在這裏扮演什麼角色。我安裝了mysql,數據實際上是在這裏編寫的 – user2029890

+0

如果您使用我們的代碼,那麼OAuth令牌將寫入數據庫。就我所知,我們的代碼/標記與Intuit無法互操作,所以如果您想使用我們的代碼,您必須通過「連接到QuickBooks」按鈕重新連接。 GitHub *上包含的配置文件是一個工作示例,前提是您遵循GitHub自述文件中鏈接的快速入門指南。 –

0

也許這將幫助你:

創建字符串的所有參數和鑰匙,並與授權的關鍵陣列和在標題部分使用。

$auth = 'realm="123456",oauth_consumer_key="KEYSTRING",oauth_token="TOKENSTRING",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1502970860",oauth_nonce="KbSwZN",oauth_version="1.0",oauth_signature="W3fYzXn5EZ1ajo6SfU0LZEQPKfc%3D"'; 

$headr = array(); 
$headr[] = 'Authorization: OAuth '.$auth; 

$url = "https://quickbooks.api.intuit.com/v3/company/123456/customer/2"; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_HTTPHEADER,$headr); 
curl_setopt($ch, CURLOPT_VERBOSE, TRUE); 
$response = curl_exec($ch); 

echo "<pre>"; print_r($response); echo "</pre>"; die(); 
相關問題