Unauthorize-401 错误,QuickBooks

UJS*_*UJS 1 c# asp.net quickbooks oauth quickbooks-online

出现 Unauthorize-401 错误。

\n\n

我正在开发 QuickBooks 集成模块。几天后,在美国沙箱公司上一切正常。\n今天我为沙箱创建了新的单独帐户用于测试目的。\n 对于旧帐户,一切都很完美。但对于新创建的帐户Unauthorize-401问题来了。

\n\n

我今天经历的步骤如下:\n1. 在developer.intuit.com/\n2中创建了帐户。在“我的应用程序”下,创建了新的会计应用程序。\n3. 在沙盒下,添加了美国公司。\n4. 从我的项目,托管在我的本地主机。完成 OAuth 过程以收集访问令牌和访问令牌机密。\n5。现在,当我尝试获取客户列表或(其他 intuit 对象)时,出现 Unauthorize-401 错误。

\n\n

我的项目的整个系统在之前创建的沙箱公司上运行良好。\n但是对于今天配置的公司,Unauthorize-401错误是公司。

\n\n

我浏览了多个链接,但没有解决所面临的问题,如下:

\n\n\n\n

首先,我感谢您让我摆脱这个问题。

\n\n

代码 :

\n\n

收集数据服务:

\n\n
private DataService GetDataService()\n        {\n            try\n            {\n                string accessToken = AppSessions.QBAccessToken,\n                    accessTokenSecret = AppSessions.QBAccessTokenSecret\n                    , consumerKey = AppSessions.QBConsumerKey, consumerSecret = AppSessions.QBConsumerSecret\n                    , realmId = AppSessions.QBCompanyCode;\n                OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret);\n\n                var serviceType = IntuitServicesType.QBO;\n                var validator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret);\n                var context = new ServiceContext(realmId, serviceType, validator);\n                context.IppConfiguration.BaseUrl.Qbo = AppSessions.IppConfigBaseURL;// "https://sandbox-quickbooks.api.intuit.com/";\n                return new DataService(context);\n            }\n            catch (Exception ex)\n            {\n                return null;\n            }\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

从 Sandbox US 公司获取客户列表:

\n\n
public List<Customer> GetCustomer()\n        {\n            return service.FindAll(new NSQB.Customer(), StartPosition, MaxResult).ToList<NSQB.Customer>();\n        }\n
Run Code Online (Sandbox Code Playgroud)\n\n

笔记

\n\n
    \n
  • 我正在使用 AppSessions 静态类来管理会话。
  • \n
  • NSQB是用于 QuickBook 的命名空间的别名,即

    \n\n

    使用 NSQB =\n Intuit.Ipp.Data;

  • \n
\n\n

我和Intuit团队讨论过。Quick-book系统正在维护中。

\n\n

我在 Quick-Books 团队通过电子邮件收到的回复之一:

\n\n
\n

我们今天停电了。请重试。如果您将产品密钥更改为开发密钥以使用沙箱进行测试,请记住将您的基本 URL 更改为沙箱。

\n
\n\n

中断会导致 401 错误。

\n\n

他们分享有关状态管理的维护链接。

\n\n

问题仍然存在!

\n

小智 5

你的代码看起来不错;当 QuickBooks Online 出现 401 错误时,可能有两个原因:

  1. 访问令牌无效;
  2. 沙箱服务器有问题。

大多数开发人员不知道的是,当沙箱服务器出现异常时,访问令牌将被重置。这将导致之前的工作访问令牌变得无效,即 401 错误。

以下是我发现在您看到 401 错误时非常有用的一些步骤:

  1. 转到 Intuit 的状态页面:http://status.developer.intuit.com/并查看 Sandbox 服务器是否存在任何问题
  2. 如果您认为沙箱不可用,请转到 API 资源管理器: https: //developer.intuit.com/v2/apiexplorer ?apiname=V3QBO#?id=Account 并查看它是否有效
  3. 尝试 POSTMAN(或简单的 cUrl),添加访问令牌、访问机密、消费者机密和消费者密钥,并进行示例调用以查看它是否可以通过(确保它指向沙箱 url)。
  4. 如果未通过,并返回 401 状态代码,请重新生成访问令牌。对于沙箱来说,最好的方法是使用 OAuth Playground。在应用程序的仪表板中,有一个名为“使用 OAuth Playground 和 OpenID Playground 进行测试”的链接。单击 OAuth Playground,将访问令牌持续时间从 120 更改为 15552000 并完成 OAuth 流程。现在将有一个新令牌可供您测试。
  5. 如果以上方法均不起作用,请为 intuit QuickBooks Online 团队创建票证。