Oauth InvalidTokenException:未经授权-401
我正在将应用程序转换为使用IPP.NETAPIv3。我已经构建了所有OAuth并保存了令牌信息。正在尝试建立连接,但总是出现错误。我已经检查并重新检查了所有令牌数据,它看起来是正确的。我哪里出错了?我使用的是NuGet为OAuth和Intuit.Ipp定义的版本(IPPAPIV3)。我正在使用我的测试客户令牌信息,但注意到基本URL(来自IPP库)是。那还能用吗Oauth InvalidTokenException:未经授权-401,oauth,intuit-partner-platform,Oauth,Intuit Partner Platform,我正在将应用程序转换为使用IPP.NETAPIv3。我已经构建了所有OAuth并保存了令牌信息。正在尝试建立连接,但总是出现错误。我已经检查并重新检查了所有令牌数据,它看起来是正确的。我哪里出错了?我使用的是NuGet为OAuth和Intuit.Ipp定义的版本(IPPAPIV3)。我正在使用我的测试客户令牌信息,但注意到基本URL(来自IPP库)是。那还能用吗 Dim accessToken As String = QBOE.GetOAuthItem(Profile.Commo
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.Exception.InvalidTokenException
我检查了fiddler2中的调用,发现对我的OAuth的调用是通过workplace.intuit.com:443进行的,但是IPP调用是通过quickbooks.api.intuit.com:443进行的。我还注意到fiddler2列出了IPP调用,结果是200。输出如下所示
标题文字:
连接quickbooks.api.intuit.com:443http/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
课程ID: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\u RSA\u与\u RC4\u 128\u SHA
[000A]SSL\u RSA\u与\u 3DES\u EDE\u SHA
[C013]TLS1_CK_ECDHE_RSA_与_AES_128_CBC_SHA
[C014]TLS1_CK_ECDHE_RSA_与_AES_256_CBC_SHA
[C009]TLS1_CK_ECDHE_ECDSA_与_AES_128_CBC_SHA
[C00A]TLS1_CK_ECDHE_ECDSA_与_AES_256_CBC_SHA
[0032]TLS_DHE_DSS_与_AES_128_SHA
[0038]TLS_DHE_DSS_与_AES_256_SHA
[0013]SSL_DHE_DSS_与_3DES_EDE_SHA
[0004]SSL\u RSA\u与\u RC4\u 128\u MD5
答复文本:
已建立HTTP/1.1 200盲连接
FiddlerGateway:直接
开始时间:01:17:18.298
完时间:01:17:18.536
这是一个连接隧道,加密的HTTPS流量通过它流动。要查看此隧道内的加密会话,请确保选中“工具”>“Fiddler选项”>“HTTPS”>“解密HTTPS流量”选项
发送的数据表示与SSLv3兼容的ServerHello握手。为方便起见,数据摘录如下
主要版本:3
小版本:1
课程ID: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
Cipher:0x05您可以使用IPP提供的.net devkit尝试以下文档中提到的调用 401明确表示您的OAuth令牌/请求头不正确。 要对此进行调试,可以使用任何标准的RestClient(如Mozilla browser或Fiddler的RestClient插件),其中可以设置四个OAuth令牌[消费者密钥、消费者机密、访问密钥和访问令牌]和内容类型[应用程序/xml]
- URI:/customer
- 方法:邮寄
- 内容类型:application/xml
谢谢谢谢你的快速回复。这是一份文档(你链接的文档,我从中构建此文档),我已经安装了用于firefox的RestClient插件,因此将尝试你的建议。我还用Fiddler的一些发现更新了这篇文章(请查看这是否会影响你的建议)。我从所有OAuth呼叫中获得有效回复并将其保存。我还多次清除和重置(使用我的程序OAuth进程和Intuit游乐场中)“我从所有OAuth呼叫中获得有效回复并将其保存。”-这意味着一切都准备就绪了吗?Mozilla RestClient在这里工作得很好。请让我知道它是如何运行的,只在OAuth端(我在那里进行回调以设置新的身份验证)。我不明白的一点是…如果我了解IPP SDK,它会为我处理很多事情(比如标题中的OAuth_签名)。我如何使用firefox插件在我的RestClient测试调用中获得它?我已经添加了3个快照。请看一看。ThanksI返回并在开始时按照您的指示进行操作,并浏览了游乐场设置。它创建的customerkey和ConsumerCret与“我的应用程序->管理应用程序”屏幕上显示的内容不同(仍然没有在那里更改它们)。无论如何,我在我的web.config中更改了它们,现在一切都正常了。猜测customerKey和Secret不知怎的被更改了,但从未在屏幕上更新。谢谢你的帮助,我已经为此奋斗了三天,但至少我学到了很多。