获取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>();
}
注意:
NSQB 是用于QuickBook的命名空间的别名,即
使用NSQB = Intuit.Ipp.Data;
我与Intuit团队讨论过。快速预订系统处于维护阶段。
Quick-Books团队对电子邮件的回应之一:
我们今天中断了。请重试。记得改变你的基础 如果您将prod密钥更改为dev密钥以进行测试,则将URL设置为沙箱 用沙箱。
中断导致401错误。
Maintenance他们分享有关其状态管理的链接。
问题依然存在!!
答案 0 :(得分:3)
你的代码看起来很好;当QuickBooks Online出现401错误时,可能有两个原因:
大多数开发人员都不知道的是,当沙盒服务器出现异议时,访问令牌将被重置。这将导致先前的工作访问令牌变为无效,即401错误。
以下是我发现401错误时非常有用的一些步骤: