我希望能够为我在Intuit上开发的一个测试应用程序调用Quickbooks。这个应用程序是用Xcode制作的,使用Swift,下面是我到目前为止的情况:
var request = NSMutableURLRequest(URL: NSURL(string: "https://quickbooks.api.intuit.com/v3/company/1313821405/query?query=SELECT%20*%20FROM%20Customer")!)
request.HTTPMethod = "GET"
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
(response, data, error) in
println(response)
println(data)
println(error)
if error == nil {
if let HTTPResponse = response as? NSHTTPURLResponse {
let statusCode = HTTPResponse.statusCode
if statusCode == 200 {
println("success")
}
}
}
}错误说“操作无法完成”。我是在一家沙箱公司做的,这就是原因吗?如果我输入了一个真正的公司ID,它会起作用吗?另外,我如何使用API?
发布于 2015-02-27 06:49:38
没有办法完全从您的移动应用程序生成令牌。
使用consumerKey和consumerToken,您可以从OAuthPlayground生成accessToken和accessSecret。https://appcenter.intuit.com/Playground/OAuth/IA PN -在完成C2QB(OAuth)流之后,您应该使用‘API测试’。选项,它将显示accessToken和accessSecret。
收到这4张代币后,你可以打任何电话。为此,您应该使用任何标准的OAuth库(Swift),比如https://github.com/dongri/OAuthSwift PN --我还没有尝试过它(我在网络中做了一个lil搜索之后才找到它)。
PFB发布了我共享的使用signPost OAuth库的OAuth代码。您可以将其转换为Swift (使用OAuthSwift或任何其他合适的库)。How to call API (Oauth 1.0)?
发布于 2015-02-27 05:20:15
您是否使用OAuth1.0对请求进行了身份验证,并获得了访问令牌和访问令牌秘密以进行api调用?您需要有一个实现按钮的网页,然后为您想要连接的QBO公司获取这些令牌。然后,只有您可以调用api。
编辑-获取请求令牌调用-
获取signature=0EtvSnzsuumeyib2fiEcnSyu8%3D HTTP/1.1主机: oauth.intuit.com
HTTP/1.1 200正常
日期:清华大学,2014年2月13日15:56:03格林尼治时间
服务器: Apache
缓存-控制:无缓存,无存储
Pragma:无缓存
内容长度: 150
连接:关闭
内容-类型:文本/纯文本
oauth_token_secret=dXhHHMS1EfdrQ32UabOMscIRWt5bLJNX3ZKljjBc&oauth_callback_confirmed=true&oauth_token=qyprdbwXdWrAt0xM2NgkLlJ79yCp4I2SmDg7tahDBPjA6Wti
获取访问令牌-
获取signature=gEVHttlM8IBAAkmi1dSNJgkKGsI%3D HTTP/1.1主机: oauth.intuit.com
HTTP/1.1 200确定日期:2014年2月14日星期五17:03:20 GMT Server: Apache Cache-Control:无缓存,无存储Pragma:无缓存内容-长度: 120连接:关闭内容-类型:text/平原
oauth_token_secret=474gtp6xsFzNJ1EhrrjiHrTH96xXieaRLinjPomA&oauth_token=qyprdNIpWn2oYPupMpeH8Byf9Bhun5rPpIZZtTbNsPyFtbT4
编辑-发出api调用的原始req和响应- POST https://quickbooks.api.intuit.com/v3/company/717093040/query HTTP/1.1
内容-类型:文本/纯文本
主机: quickbooks.api.intuit.com
授权: oauth_token="lvprdBmi45KMPO2FnvYtq6KLFTMM7KG0P0PJO3Sm7F3n7pgq",oauth_nonce="e5d6e732-f903-4456-9c5f-58103843c3c6",oauth_consumer_key="qyprd7I5WvVgJZUvWDFnPoiBh1ejZn",oauth_signature_method=“HMAC 1”,oauth_timestamp="1394005668",oauth_version="1.0",oauth_signature="J8qgGZRa4loR6HEtdpAudP1nVpw%3D“
内容长度: 47 Expect: 100-继续连接:保持-活动
从帐户中选择*
HTTP/1.1 200正常
日期:2014年3月5日,星期三07:47:49
服务器: Apache/2.2.3 (红帽)
HeaderQueryTime: 21
ContextInitTime: 12
HeaderDAOTime: 22
回应-编号: 146f271e-1f23-4842-87ba-ad9fc69fe0a2
回应-应用-时间: 196
intuit_tid: 146f271e-1f23-4842-87ba-ad9fc69fe0a2
连接:关闭
内容-类型: application/xml
内容长度: 36683
<IntuitResponse xmlns="http://schema.intuit.com/finance/v3" time="2014-03- 05T07:47:49.393Z"><QueryResponse maxResults="64" startPosition="1"><Account status="Pending"><Id>QB:9</Id><SyncToken>7</SyncToken><MetaData> <CreateTime>2014-03-03T10:56:45Z</CreateTime><LastUpdatedTime>2014-03- 04T14:44:57Z</LastUpdatedTime></MetaData><Name>Name_updatedc4f1a</Name> <SubAccount>false</SubAccount> <Description>description_updatedfc6b1</Description><Active>true</Active> <Classification>Revenue</Classification><AccountType>Income</AccountType> <AcctNum>49400</AcctNum><CurrentBalance>22654.7</CurrentBalance> <OnlineBankingEnabled>false</OnlineBankingEnabled></Account></QueryResponse> </IntuitResponse>https://stackoverflow.com/questions/28751996
复制相似问题