【问题标题】:Unauthorize-401 Error ,QuickBooks未经授权的 401 错误,QuickBooks
【发布时间】:2017-01-09 09:55:51
【问题描述】:

出现 Unauthorize-401 错误。

我正在开发 QuickBooks 集成模块。几天前在美国沙盒公司一切正常。 今天我为沙箱创建了新的单独帐户以进行测试。 对于旧帐户,一切都很完美。但是对于新创建的帐户,Unauthorize-401 问题即将到来。

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

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

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

在此感谢您让我摆脱这个问题。

代码:

收集数据服务:

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 Team 讨论过。Quick-book System 在维护中。

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

我们今天停电了。请重试。记得改变你的基地 如果您将 prod 密钥更改为 dev 密钥以进行测试,则 url 到沙箱 带沙盒。

中断会导致 401 错误。

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

问题依然存在!!

【问题讨论】:

  • 发布您的代码。发布您的应用程序配置的屏幕截图。发布您正在发出的 API 请求的示例,以及您收到的 API 响应。确保如果您使用的是沙盒公司,则访问的是沙盒 URL,如果您使用的是实时公司,请确保访问的是实时 URL。
  • 是的@KeithPalmerJr。当然..
  • 好的,我会等到您提供我要求的所有内容并确认 URL/沙盒设置后才回答。
  • @KeithPalmerJr。 ,我已经分享了代码,这对于一家沙盒公司来说是完美的,但不适用于我今天用新帐户创建的另一家沙盒公司。 !!
  • 好的,我没有足够的信息来帮助你。请提供我上面指出的其他信息。

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


【解决方案1】:

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

  1. 访问令牌无效;
  2. 沙盒服务器出现问题。

大多数开发者不知道的是,当沙盒服务器发生异常时,访问令牌将被重置。这将导致之前的工作访问令牌失效,即 401 错误。

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

  1. 转到 Intuit 的状态页面:http://status.developer.intuit.com/ 并查看沙盒服务器是否有任何问题
  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 团队创建工单。

【讨论】:

  • 是的,现在我找到了解决方案。多个公司令牌在 OAuth 过程中发生冲突。!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 1970-01-01
  • 2017-12-20
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
相关资源
最近更新 更多