我们正在尝试使用 Ruby 1.9.3 (not RoR)与 QuickBooks Online V2 api 集成。使用API Explorer和Employee 端点文档,我们能够通过使用Google Signet OAuth Gem获得一个简单的测试员工列表。
require 'signet'
require 'signet/oauth_1/client'
#intialize oauth1 client
@client = Signet::OAuth1::Client.new(
:temporary_credential_uri => "https://oauth.intuit.com/oauth/v1/get_request_token",
:authorization_uri => "https://appcenter.intuit.com/Connect/Begin",
:token_credential_uri => "https://oauth.intuit.com/oauth/v1/get_access_token",
:client_credential_key => 'qyprdPEfJqU7eOze0Fby9iYhrUS5DQ',
:client_credential_secret => 'fuXsasJo4TrTEd3Yhv4TeMUizmtguh0JioIB5r2I',
:callback => "http://localhost:3000/callback/general"
)
@client.token_credential_key = 'qyprdJUtDSk7owxVfZlq7JeWO1mtpHBkSMD5GhB02PwIC6N0'
@client.token_credential_secret = 'Rq2ekgQWWL9frZAKpcgWef291mR0J5HBE354u5F3'
#setup request
original_request = [
'POST',
'https://qbo.sbfinance.intuit.com/resource/employees/v2/791630875',
# we also tried this url 'https://qbo.intuit.com/qbo28/resource/employees/v2/791630875',
[
['Content-Type', 'application/x-www-form-urlencoded'],
],
[]
]
#execute request
response = @client.fetch_protected_resource(:request => original_request)
puts response.body
如您所见,请求非常简单。但是,一旦我们在正文中创建了一个带有过滤器的请求,我们就会得到一个带有以下错误的 HTML 页面:HTTP Status 401 - message=Exception authenticating OAuth; errorCode=003200; statusCode=401
#setup request
original_request = [
'POST',
'https://qbo.intuit.com/qbo28/resource/employees/v2/791630875',
#'https://qbo.sbfinance.intuit.com/resource/employees/v2/791630875',
[
['Content-Type', 'application/x-www-form-urlencoded'],
],
["Filter=Name :EQUALS: Doe"]
]
我们正在使用 Google OAuth gem,并且我已经使用以下工具验证了签名生成是正确的:LinkedIn Oauth Test Console 和Beginners guide to OAuth signing requests。他们都验证 Signet 生成的签名对于我提供的正文是否正确。
我查看了一些 SO Questions:
但没有任何效果。任何帮助将不胜感激,我们愿意使用第三方 gem,例如quickeebooks,但我们不愿意。我想我只是在这里遗漏了一些简单的东西。
请向我提供以下项目,以便我验证有效的答案:
- 您的请求参数,包括 uri、标头、正文和确切的客户端和访问令牌(仅限开发人员应用令牌,我需要验证我是否可以生成完全相同的请求,包括签名)
- 您用于生成 HMAC-SHA1 签名的 basestring。它看起来像
POST&https%3A%2F%2Fqbo.intuit.com%2Fqbo28%2Fresource%2Femployees%2Fv2%2F791630875&Filter%3DName%2520%253AEQUALS%253A%2520David%2520Test%26oauth_consumer_key%3DqyprdPEfJqU7eOze0Fby9iYhrUS5DQ%26oauth_nonce%3D-1787433535548338293%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1380089100%26oauth_token%3DqyprdJUtDSk7owxVfZlq7JeWO1mtpHBkSMD5GhB02PwIC6N0%26oauth_version%3D1.0
- 您的回复,包括标题和正文数据