0

curl を介してサービスを呼び出そうとしていますが、ここに私のコードがあり、添付のエラーが発生するたびに

error_reporting(-1); 
$qbsite = "https://qbo.sbfinance.intuit.com/resource/account/v2/960432556";
$headers = array(
        'Content-Type'=>'application/xml',
        'oauth_version' => "1.0",
        'oauth_signature_method'=>"HMAC-SHA1",
        'oauth_nonce'=>"xxx",
        'oauth_timestamp'=>"xxx",
        'oauth_consumer_key'=>"qyprdvZraQrBVbrPIptwd6gl6C6knP",
        'oauth_token'=>"qyprdyLcCq9KMGVzqxtObeOkTvSWhhi7sNSW62u9gwqDXsc7",
        'oauth_signature'=>"LnVYSgE9YZ77KgKZ1kLT3ouIu1M=",

);

$xmlData = '<?xml version="1.0" encoding="utf-16"?> 
            <Account xmlns:ns2="http://www.intuit.com/sb/cdm/qbo" xmlns="http://www.intuit.com/sb/cdm/v2"> 
                <Name>Loan Account </Name> 
                <Desc>Loan Account</Desc> 
                <Subtype>Savings</Subtype> 
                <AcctNum>5001</AcctNum> 
                <OpeningBalanceDate>2010-05-14</OpeningBalanceDate> 
            </Account>';

$ch = curl_init($qbsite);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, "\n{$xmlData}");
$response = curl_exec($ch);
print($response);die; !

ここに画像の説明を入力

4

2 に答える 2

2

これ:

$headers = array(
        'Content-Type'=>'application/xml',
        'oauth_version' => "1.0",
        'oauth_signature_method'=>"HMAC-SHA1",
        'oauth_nonce'=>"xxx",
        'oauth_timestamp'=>"xxx",
        'oauth_consumer_key'=>"qyprdvZraQrBVbrPIptwd6gl6C6knP",
        'oauth_token'=>"qyprdyLcCq9KMGVzqxtObeOkTvSWhhi7sNSW62u9gwqDXsc7",
        'oauth_signature'=>"LnVYSgE9YZ77KgKZ1kLT3ouIu1M=",

);

正しい OAuth 署名にさえ近くありません。OAuth 署名は、そのすべての情報を単一のAuthorization: ...HTTP ヘッダーに配置しますが、OAuth データの各部分を個別の HTTP ヘッダーに平手打ちしました。

たとえば、正しい OAuth ヘッダーは次のようになります。

Authorization: OAuth realm="",
    oauth_consumer_key="dpf43f3p2l4k3l03",
    oauth_nonce="kllo9940pd9333jh",
    oauth_timestamp="1191242096",
    oauth_signature_method="HMAC-SHA1",
    oauth_version="1.0",
    oauth_signature="tR3%2BTy81lMeYAr%2FFid0kMTYa%2FWM%3D"

さらに、OAuth 署名は静的な値ではありません。計算する必要があり、リクエストごとに変更されます。

QuickBooks PHP DevKitのナイトリー ビルドをダウンロードする必要があります(免責事項: 私は作成者です)。これは、実行していることを正確に実行する (QuickBooks と統合する) ように特別に設計されたライブラリであり、正しいビルドを処理します。 OAuth リクエスト。

具体的には、ダウンロードして次の例を見てください。

  • docs/example_ipp_oauth.php
  • docs/example_ipp_ids_5.php
于 2013-02-22T11:54:44.497 に答える
0

この行の最後にある , を削除しようとしましたか

'oauth_signature'=>"LnVYSgE9YZ77KgKZ1kLT3ouIu1M=",
于 2013-02-22T11:03:19.363 に答える