如何将节点js连接到quickbooks v3 REST API

我正尝试使用node.js连接到Intuits v3 REST API。 我使用SuperAgent和superagent-oauth来提出请求。 我使用Intuits Oauth游乐场生成访问令牌。 但我不断收到“ApplicationAuthenticationFailed; errorCode = 003200; statusCode = 401”

这是我正在使用的。

var OAuth = require('oauth') ,request = require('superagent'); require('superagent-oauth')(request); var oauth = new OAuth.OAuth('','', consumerKey, consumerSecret, '1.0.A', null, 'HMAC-SHA1') request.get("https://quickbooks.api.intuit.com/v3/company/672198300/customer/102") .set('Content-Type', 'text/plain') .accept('json') .sign(oauth,accessToken,accessTokenSecret ) .end(function (err, res) { console.log(res.text) }) 

这是回应

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <IntuitResponse time="2014-06-14T18:33:49.228-07:00" xmlns="http://schema.intuit.com/finance/v3"> <Fault type="AUTHENTICATION"> <Error code="3200"> <Message>message=ApplicationAuthenticationFailed; errorCode=003200; statusCode=401</Message> </Error> </Fault> 

任何人都可以阐明发生的事情吗?

你可以使用node.js 客户端库

像大多数其他客户端一样,这可以帮助您避免手动构buildhttp请求。 只需提供应用程序凭证和个人用户凭证,您可以简单地调用Javascript对象上的方法。 所有REST端点在QuickBooks对象上都有对应的方法,它遵循node.js约定,并将可选的callback作为最后一个参数。

解决了!

我用邮递员来创build请求。 它的工作。 然后,我检查了oAuth头邮递员生成与我正在生成的节点(我使用requestBin查看我的请求标题)。 我发现唯一真正的区别是我使用“1.0A”作为版本。 改变到“1.0”工作!

 var oauth = new OAuth.OAuth('','', consumerKey, consumerSecret, '1.0', null, 'HMAC-SHA1') 

我在node.js中没有任何东西,但可以为您提供原始请求和响应。 比较你的原始请求与此。 签名应该是双重编码的。 获取请求令牌调用 –

GET https://oauth.intuit.com/oauth/v1/get_request_token?oauth_callback=oob&oauth_nonce=34562646-ab97-46e1-9aa7-f814d83ef9d1&oauth_consumer_key=qyprd7I5WvVgWDFnPoiBh1ejZn&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1392306961&oauth_version=1.0&oauth_signature=0EtvSnzsuumeyib2fiEcnSyu8%3D HTTP / 1.1主机: oauth.intuit.com

HTTP / 1.1 200 OKdate:2014年2月13日星期四15:56:03 GMT服务器:Apache Cache-Control:no-cache,no-store Pragma:no-cache Content-Length:150 Connection:close Content-Type:text /平

oauth_token_secret = dXhHHMS1EfdrQ32UabOMscIRWt5bLJNX3ZKljjBc&oauth_callback_confirmed =真组oauth_token = qyprdbwXdWrAt0xM2NgkLlJ79yCp4I2SmDg7tahDBPjA6Wti

获取访问令牌 –

GET https://oauth.intuit.com/oauth/v1/get_access_token?oauth_verifier=b4skra3&oauth_token=qyprde5fvI7WNOQjTKYLDzTVxJ2dLPTgQEQSPlDVGxEy9wZX&oauth_nonce=f20a5a4b-3635-40a8-92cf-697dfdb07b9d&oauth_consumer_key=qyprd7I5WvVgJZUvWDFnPoiBh1ejZn&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1392397399&oauth_version=1.0&oauth_signature=gEVHttlM8IBAAkmi1dSNJgkKGsI%3D HTTP / 1.1主持人:oauth.intuit.com

HTTP / 1.1 200 OKdate:2014年2月14日星期五17:03:20 GMT服务器:Apache Cache-Control:no-cache,no-store Pragma:no-cache Content-Length:120 Connection:close Content-Type:text /平

oauth_token_secret = 474gtp6xsFzNJ1EhrrjiHrTH96xXieaRLinjPomA&组oauth_token = qyprdNIpWn2oYPupMpeH8Byf9Bhun5rPpIZZtTbNsPyFtbT4

Interesting Posts