2017-04-12 113 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

谢谢基思。您的支持帮助我解决了这个问题。你提供的图书馆非常有帮助。 –

相关问题