2015-12-14 2 views
0

Проект Java (Eclipse). Приложение для тестирования Sandbox. Я получил все необходимые токены и секретные пары, используя приложение Sample OAuth, и назначил их переменным String: consumerKey, consumerSecret, accessToken, accessTokenSecret, appToken, companyID.Java SDK QuickBooks Online. Прямой HTTP - ok, SDK - auth fail

Дальше. Я пытался разрешить QBO двумя различными способами: непосредственно с подключением HTTP (попробуйте/поймать блоков удалены):

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. После источник дает мне ошибку (попробуйте/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) 

Это говорит кое-что о AUTH ошибка, но токены в порядке. Пожалуйста, помогите мне. Что я делаю не так?

ответ

0

Исправлено. NO SLASH МОЖЕТ БЫТЬ В ЗАВЕРШЕНИИ URL В КОНФИГУЛЕ!

также использовать лесозаготовительных средства, предоставляемые SDK & log4j

+0

Привет Я начал работать на QuickBooks Пример CRUD операции, но я получаю одно исключение. –

Смежные вопросы