取消授权-401错误,QuickBooks

时间:2017-01-09 09:55:51

标签: c# asp.net oauth quickbooks quickbooks-online

获取Unauthorize-401错误。

我正在开发QuickBooks集成模块。几天前沙盒 - 美国公司的工作正常。 今天我为沙盒创建了一个新的独立帐户用于测试目的。 对于旧账户,一切都很完美。但对于新创建的账户,Unauthorize-401问题即将来临。

我今天遵循的步骤如下: 1.在developer.intuit.com/中创建帐户 2.在我的应用程序下,为会计创建新应用程序。 3.在Sandbox下,添加了美国公司。 4.从我的项目,托管在我的localhost。完成OAuth流程以收集访问令牌和访问令牌秘密。 5.现在,当我试图获取Customer或(其他直觉对象)列表时,获取Unauthorize-401错误。

我项目的整个系统完全适用于之前创建的沙盒公司。 但对于今天配置的公司,Unauthorize-401 Error就是公司。

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

事先,我感谢你让我离开这个问题。

代码:

收集DataService:

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 US Company获取客户列表:

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

注意

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

    使用NSQB =    Intuit.Ipp.Data;

我与Intuit团队讨论过。快速预订系统处于维护阶段。

Quick-Books团队对电子邮件的回应之一:

  

我们今天中断了。请重试。记得改变你的基础   如果您将prod密钥更改为dev密钥以进行测试,则将URL设置为沙箱   用沙箱。

中断导致401错误。

Maintenance他们分享有关其状态管理的链接。

问题依然存在!!

1 个答案:

答案 0 :(得分:3)

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

  1. 访问令牌无效;
  2. 沙箱服务器出现问题。
  3. 大多数开发人员都不知道的是,当沙盒服务器出现异议时,访问令牌将被重置。这将导致先前的工作访问令牌变为无效,即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),添加访问令牌,访问机密,消费者机密和消费者密钥,并进行示例调用以查看它是否可以通过(确保它指向沙箱网址)。
    4. 如果没有通过,则返回401状态代码,重新生成访问令牌。对沙箱进行此操作的最佳方法是使用OAuth Playground。在应用的信息中心中,有一个名为&#34;测试OAuth Playground和OpenID Playground&#34;的链接。单击OAuth Playground,将访问令牌持续时间从120更改为15552000并完成OAuth流程。现在,您可以使用新令牌进行测试。
    5. 如果两者都不起作用,请为intuit QuickBooks Online团队创建一张票。