InvalidTokenException:Unauthorized-401

时间:2014-03-23 06:03:49

标签: oauth intuit-partner-platform

我正在转换应用程序以使用IPP .net API V3。我已经构建了所有OAuth并保存了令牌信息。尝试建立连接但总是出错。我检查并重新检查了所有令牌数据,看起来是正确的。我哪里做错了?我正在使用NuDeet的DevDefined for OAuth和Intuit.Ipp(IPP API V3)。我正在使用我的测试客户令牌信息,但注意到基本URL(来自IPP库)是https://quickbooks.api.intuit.com/。这应该还行吗?

        Dim accessToken As String = QBOE.GetOAuthItem(Profile.Common.StoreNum, "accessToken")
    Dim accessTokenSecret As String = QBOE.GetOAuthItem(Profile.Common.StoreNum, "accessTokenSecret")
    Dim consumerKey As String = ConfigurationManager.AppSettings("consumerKey")
    Dim consumerSecret As String = ConfigurationManager.AppSettings("consumerSecret")
    Dim oauthValidator As OAuthRequestValidator = New OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret)

    Dim CompanyID As String = QBOE.GetOAuthItem(Profile.Common.StoreNum, "CompanyID")
    Dim appToken As String = ConfigurationManager.AppSettings("applicationToken")
    Dim context As ServiceContext = New ServiceContext(appToken, CompanyID, IntuitServicesType.QBO, oauthValidator)

    Dim service As DataService = New DataService(context)

    Dim customer As Customer = New Customer()
    'Mandatory Fields
    customer.GivenName = "Mary"
    customer.Title = "Ms."
    customer.MiddleName = "Jayne"
    customer.FamilyName = "Cooper"

    Dim resultCustomer As Customer = TryCast(service.Add(customer), Customer)

错误消息(service.Add上的错误)     Intuit.Ipp.E​​xception.InvalidTokenException未被用户代码

处理

我检查了fiddler2内的电话,注意到我的OAuth的电话是通过workplace.intuit.com:443,但是IPP电话通过quickbooks.api.intuit.com:443。我还注意到fiddler2列出了IPP调用,结果为200.输出如下所示。

的HeaderText: CONNECT quickbooks.api.intuit.com:443 HTTP / 1.1 主持人:quickbooks.api.intuit.com 代理连接:保持活跃

发送的数据表示与SSLv3兼容的ClientHello握手。为方便起见,下面提取了数据。

主要版本:3 次要版本:1 随机:53 2E 7C 6E A1 F4 02 4D 9D CF 60 C8 22 CA BC E8 67 6E D8 52 88 54 6F E7 D9 29 52 58 5C 2F 2E 52 SessionID:9E 01 CB DB D6 C8 78 8D D0 E9 A6 5F 02 1E 2C 6D 5D 69 34 FE FD 3E A5 52 EE 19 07 E7 D9 D6 E5 30 密码:     [002F] TLS_RSA_AES_128_SHA     [0035] TLS_RSA_AES_256_SHA     [0005] SSL_RSA_WITH_RC4_128_SHA     [000A] SSL_RSA_WITH_3DES_EDE_SHA     [C013] TLS1_CK_ECDHE_RSA_WITH_AES_128_CBC_SHA     [C014] TLS1_CK_ECDHE_RSA_WITH_AES_256_CBC_SHA     [C009] TLS1_CK_ECDHE_ECDSA_WITH_AES_128_CBC_SHA     [C00A] TLS1_CK_ECDHE_ECDSA_WITH_AES_256_CBC_SHA     [0032] TLS_DHE_DSS_WITH_AES_128_SHA     [0038] TLS_DHE_DSS_WITH_AES_256_SHA     SSL_DHE_DSS_WITH_3DES_EDE_SHA     [0004] SSL_RSA_WITH_RC4_128_MD5

回复文字: 建立HTTP / 1.1 200盲连接 FiddlerGateway:直接 StartTime:01:17:18.298 结束时间:01:17:18.536

这是一个CONNECT隧道,加密的HTTPS流量通过该隧道流动。要查看此隧道内的加密会话,请确保工具>提琴手选项> HTTPS>检查解密HTTPS流量选项。

发送的数据表示与SSLv3兼容的ServerHello握手。为方便起见,下面提取了数据。

主要版本:3 次要版本:1 SessionID:9E 01 CB DB D6 C8 78 8D D0 E9 A6 5F 02 1E 2C 6D 5D 69 34 FE FD 3E A5 52 EE 19 07 E7 D9 D6 E5 30 随机:63 E2 D0 B1 09 45 E0 28 A4 3B 0B C2 E8 5F 08 F0 D5 F5 8E A7 47 D4 10 E2 D4 D7 5B C4 74 0B 4B E2 密码:0x05

1 个答案:

答案 0 :(得分:1)

您可以使用IPP提供的.net devkit尝试此调用,如以下文档中所述。

https://developer.intuit.com/docs/0025_quickbooksapi/0055_devkits/0150_ipp_.net_devkit_3.0/0002_synchronous_calls/0001_data_service_apis

401清楚地表示您的OAuth令牌/请求标头不正确。 要调试它,您可以使用任何标准RestClients(如Mozilla浏览器或Fiddler的RestClient插件),您可以在其中设置四个OAuth令牌[使用者密钥,消费者密钥,访问密钥和访问令牌)和内容类型[application / xml] < / p>

Mozilla RestClient -

设置OAuth令牌

enter image description here

设置内容类型(在标题中)

enter image description here

enter image description here https://developer.intuit.com/docs/0025_quickbooksapi/0050_data_services/030_entity_services_reference/customer

如果上述方法有效,则表示您的OAuth令牌没问题。您需要使用devdefined然后检查并正确构造标头。

如果它不起作用,那么你需要使用IPP OAuth Playground生成一组新的访问令牌和秘密。

https://appcenter.intuit.com/Playground/OAuth

由于