【问题标题】:Call Quickbooks API调用 Quickbooks API
【发布时间】:2015-02-26 20:21:29
【问题描述】:

我希望能够为我在 Intuit Developer 上制作的测试应用调用 Quickbooks API。该应用程序是在 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?

【问题讨论】:

  • 您是否使用 Oauth 1.0 验证了您的请求并获得了访问令牌和访问令牌秘密以进行 api 调用?

标签: php xcode swift quickbooks intuit


【解决方案1】:

无法完全从您的移动应用生成令牌。

使用 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 - 我还没有尝试过(我只是在网上搜索了一下之后才找到它)。

我分享了使用 signPost OAuth 库的 Java 代码的 PFB 帖子。 您可以将其转换为 Swift(使用 OAuthSwift 或任何其他合适的库)。 How to call API (Oauth 1.0)?

【讨论】:

  • 谢谢,我现在就试试!
【解决方案2】:

https://developer.intuit.com/docs/0100_accounting/0060_authentication_and_authorization

您是否使用 Oauth 1.0 验证了您的请求并获得了访问令牌和访问令牌秘密以进行 api 调用?您需要有一个实现连接到 Quickbooks 按钮的网页,然后为您想要连接的 QBO 公司获取这些令牌。然后只有你可以调用 api。

[编辑]- 获取请求令牌调用-

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 正常

日期:格林威治标准时间 2014 年 2 月 13 日星期四 15:56:03

服务器:Apache

缓存控制:无缓存,无存储

编译指示:无缓存

内容长度:150

连接:关闭

内容类型:文本/纯文本

oauth_token_secret=dXhHHMS1EfdrQ32UabOMscIRWt5bLJNX3ZKljjBc&oauth_callback_confirmed=true&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 正常 日期:格林威治标准时间 2014 年 2 月 14 日星期五 17:03:20 服务器:阿帕奇 缓存控制:无缓存,无存储 Pragma:无缓存 内容长度:120 连接:关闭 内容类型:text/plain

oauth_token_secret=474gtp6xsFzNJ1EhrrjiHrTH96xXieaRLinjPomA&oauth_token=qyprdNIpWn2oYPupMpeH8Byf9Bhun5rPpIZZtTbNsPyFtbT4


[编辑]- 用于进行 api 调用的原始请求和响应- 发布https://quickbooks.api.intuit.com/v3/company/717093040/query HTTP/1.1

内容类型:文本/纯文本

主机:quickbooks.api.intuit.com

授权:OAuth的组oauth_token = “lvprdBmi45KMPO2FnvYtq6KLFTMM7KG0P0PJO3Sm7F3n7pgq”,oauth_nonce = “e5d6e732-f903-4456-9c5f-58103843c3c6”,oauth_consumer_key = “qyprd7I5WvVgJZUvWDFnPoiBh1ejZn”,oauth_signature_method = “HMAC-SHA1”,oauth_timestamp = “1394005668”,oauth_version =“1.0 ",oauth_signature="J8qgGZRa4loR6HEtdpAudP1nVpw%3D"

内容长度:47 期望:100-继续 连接:保持活动状态

从帐户中选择 *

HTTP/1.1 200 正常

日期:格林威治标准时间 2014 年 3 月 5 日,星期三 07:47:49

服务器:Apache/2.2.3(红帽)

标头查询时间:21

上下文初始化时间:12

HeaderDAOTime: 22

响应 ID:146f271e-1f23-4842-87ba-ad9fc69fe0a2

响应应用时间:196

intuit_tid: 146f271e-1f23-4842-87ba-ad9fc69fe0a2

连接:关闭

内容类型:应用程序/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>

【讨论】:

  • 查看上面的链接,了解在应用程序的网页中实现连接到 Quickbooks 按钮的详细信息。检查应用内/应用内流程。
  • 我不是在制作网页——我是在制作应用程序,我必须制作网页吗?
  • 是的,您需要添加一个处理 oauth 的 Web 组件/页面。
  • QBO oauth 要求您通过使用网页上的 Connect to Quickbooks 按钮来实现 Appcenter js,并且 oauth swift 工具包应该可以帮助您发送 oauth 所需的参数。请参阅上面我的答案中添加的原始请求/响应示例。
  • 到目前为止,我的应用可以打开 Connect to Quickbooks 页面并获取 oauth token 和 oauth secret token。然后我会调用哪个链接来访问 Quickbooks API?会不会是这样的:qb.sbfinance.intuit.com/v3/company/396933811 /query?query=SELECT%20%2A%20FROM%20Customer&oauth_token_secret=******&oauth_token=******
猜你喜欢
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多