未经授权的 401 错误,QuickBooks

Unauthorize-401 Error ,QuickBooks

出现 Unauthorize-401 错误。

我正在开发 QuickBooks 集成模块。几天前在 sandbox-US-company 上一切正常。 今天我为测试目的为沙箱创建了新的单独帐户。 对于旧帐户,一切都很完美。但是对于新创建的帐户,Unauthorize-401 问题即将出现。

我今天经历的步骤如下: 1. 在 developer.intuit.com/ 创建帐户 2. 在我的应用程序下,为会计创建了新应用程序。 3. 沙盒下新增美国公司。 4. 从我的项目,托管在我的本地主机上。完成 OAuth 过程以收集访问令牌和访问令牌秘密。 5. 现在,当我尝试获取客户列表或(其他直觉对象)时,出现 Unauthorize-401 错误。

我项目的整个系统在之前创建的沙盒公司上运行良好。 但是对于今天配置的公司,Unauthorize-401 Error 是 company.

我通过了多个链接,但没有摆脱面临的问题,如下:

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

代码:

收集数据服务:

private DataService GetDataService()
        {
            try
            {
                string accessToken = AppSessions.QBAccessToken,
                    accessTokenSecret = AppSessions.QBAccessTokenSecret
                    , consumerKey = AppSessions.QBConsumerKey, consumerSecret = AppSessions.QBConsumerSecret
                    , realmId = AppSessions.QBCompanyCode;
                OAuthRequestValidator oauthValidator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret);

                var serviceType = IntuitServicesType.QBO;
                var validator = new OAuthRequestValidator(accessToken, accessTokenSecret, consumerKey, consumerSecret);
                var context = new ServiceContext(realmId, serviceType, validator);
                context.IppConfiguration.BaseUrl.Qbo = AppSessions.IppConfigBaseURL;// "https://sandbox-quickbooks.api.intuit.com/";
                return new DataService(context);
            }
            catch (Exception ex)
            {
                return null;
            }
        }

从 Sandbox 美国公司获取客户名单:

public List<Customer> GetCustomer()
        {
            return service.FindAll(new NSQB.Customer(), StartPosition, MaxResult).ToList<NSQB.Customer>();
        }

注意

我和Intuit Team讨论过,Quick-book系统在维护中。

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

We had an outage today. Please retry. Do remember to change your base url to sandbox if you changed your prod keys to dev keys for testing with sandbox.

中断导致 401 错误。

Maintenance Link 他们分享了他们的状态管理。

问题仍然存在!!

你的代码看起来不错;当 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。在您应用程序的仪表板中,有一个名为 "Test with OAuth Playground and OpenID Playground" 的 link。单击 OAuth Playground,将访问令牌持续时间从 120 更改为 15552000 并完成 OAuth 流程。现在将有一个新的令牌可供您测试。
  5. 如果上述方法均无效,请为 intuit QuickBooks Online 团队创建工单。