【问题标题】:Java SDK QuickBooks Online. Direct HTTP — ok, SDK — auth failJava SDK QuickBooks Online。直接 HTTP — 好的,SDK — 身份验证失败
【发布时间】:2016-03-19 19:29:00
【问题描述】:

Java 项目 (Eclipse)。沙盒测试应用。我使用示例 OAuth 应用程序获得了所有必要的令牌和秘密对,并将它们分配给字符串变量:consumerKey、consumerSecret、accessToken、accessTokenSecret、appToken、companyID。

接下来。我尝试通过两种不同的方式授权 QBO:直接使用 HTTP 连接(删除 try/catch 块):

OAuthConsumer ouathconsumer = new DefaultOAuthConsumer(consumerKey,consumerSecret);

ouathconsumer.setTokenWithSecret(accessToken, accessTokenSecret);

HttpURLConnection urlConnection = null;

URL url = new URL("https://sandbox-quickbooks.api.intuit.com/v3/company/" + companyID + "/customer/4");

urlConnection = (HttpURLConnection)url.openConnection();

urlConnection.setRequestMethod("GET");

urlConnection.setUseCaches(false);

urlConnection.setDoInput(true);

urlConnection.setDoOutput(true);

urlConnection.setRequestProperty("Connection", "Close");

urlConnection.setRequestProperty("Content-Type", "application/json");

urlConnection.setRequestProperty("Accept", "application/json");

ouathconsumer.sign(urlConnection);

urlConnection.connect();

BufferedReader rd = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

System.out.println(rd.readLine());

rd.close();

而且效果很好!但我想做 SDK 调用。以下来源给了我错误(删除了 try/catch,秘密字符串相同):

IAuthorizer authorizer = new OAuthAuthorizer(consumerKey, consumerSecret, accessToken, accessTokenSecret);

Context context = new Context(authorizer, appToken, ServiceType.QBO, companyID);

DataService service = new DataService(context);

Customer customer=new Customer();

customer.setId("3");

Customer resultCustomer = service.findById(customer);

最后一行给出当前错误(一些字符串被星号替换):

com.intuit.ipp.exception.AuthenticationException: ERROR CODE:3200, ERROR MESSAGE:message=ApplicationAuthenticationFailed; errorCode=003200; statusCode=401, ERROR DETAIL:SignatureBaseString: GET&https%3A%2F%2Fsandbox-quickbooks.api.intuit.com%2Fv3%2Fcompany%***%2Fcustomer%2F3&minorversion%3D3%26oauth_consumer_key%***%26oauth_nonce%3D-4488452729022111661%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1450088662%26oauth_token%***%26oauth_version%3D1.0%26requestid%3Dc5bba96ea6894dc3be93588324778891

at com.intuit.ipp.interceptors.HandleResponseInterceptor.execute(HandleResponseInterceptor.java:91)

at com.intuit.ipp.interceptors.IntuitInterceptorProvider.executeResponseInterceptors(IntuitInterceptorProvider.java:94)

at com.intuit.ipp.interceptors.IntuitInterceptorProvider.executeInterceptors(IntuitInterceptorProvider.java:67)

at com.intuit.ipp.services.DataService.executeInterceptors(DataService.java:126)

at com.intuit.ipp.services.DataService.findById(DataService.java:215)

at test_qb.Start_QB.main(Start_QB.java:76)

它说明了身份验证错误,但令牌没问题。请帮帮我。我做错了什么?

【问题讨论】:

    标签: java oauth sdk quickbooks quickbooks-online


    【解决方案1】:

    已修复。配置中的 URL 结尾不能有斜线!

    也可以使用 SDK & log4j 提供的日志工具

    【讨论】:

    • 您好,我开始编写快速手册示例 CRUD 操作,但遇到一个异常。
    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多