2017-02-26 5 views
0

빠른 배경. 나는 컴퓨터 과학자 나 프로그래머가 아니다. 안드로이드를 개인적인 도전으로 배우려고 노력합니다. (현대 사회와의 만남을 통해 아이들을 더 잘 이해할 수 있습니다.) 나는 아주 간단하게 시작했고, 점점 더 도전적인 기술을 다루려고 천천히 노력하고 있습니다.Android OAUTH 특수 라이브러리 제외

지금 당장 OAUTH 인증을 사용하여 Yelp API에 연결하려고합니다. 나는 많은 블로그 게시물을 읽었다. 나는 여기에서 많은 주제를 수색하고 읽었다. 일부는 도움이되고, 일부는 나를 위해 너무 앞서 있습니다.

OAUTH에 사용할 수있는 라이브러리가 있다는 것을 알고 있습니다. 예를 들어 푯말 라이브러리를 설치하여 사용할 수 있습니다. 그게 내 다음 단계 일거야. 지금, 저는 특별한 라이브러리를 사용하지 않고 YELP API에 연결하려고 노력하고 있습니다.

YELP 설명서가 충분히 간단 해 보입니다.

Screenshot of YELP API documentation

나는 내 클라이언트 ID 및 클라이언트 비밀이있다. 다음 코드 줄을 사용하여 액세스 토큰을 요청하려고했습니다.

Lines of code used to request access token

내 시도는 비참하게 실패합니다. 오류 응답 코드 : 400.

오류를 지적 하시겠습니까?

귀하의 도움에 감사드립니다.

+0

400은 서버의 잘못된 응답을 의미합니다! ... 더 많은 코드를 보면 어쩌면 Http 대신 Http가 처리해야한다고 생각할 것입니다 ... 그러나 나는 안드로이드 개발자에게 단지 멍청한 사람입니다 – Zillinium

답변

0

setRequestProperty(String key, String value) 메서드는 쿼리 매개 변수도 폼 매개 변수도 아닙니다. 이 메소드는 보낼 HTTP 헤더를 설정하기위한 것입니다.

String credentials = String.format("%s:%s", "MyClientId", "MyClientSecret"); 
byte[] credentialsBytes = credentials.getBytes("UTF-8"); 
String encoded = org.apache.commons.codec.binary.Base64.encodeBase64String(credentialsBytes); 
String authorization = String.format("Basic %s", encoded); 

hURLConnection.setRequestProperty("Authorization", authorization); 

요청 본문에 요청 매개 변수를 삽입하려면 : 옐프의 API가 을 지원

hURLConnection.setDoOutput(true); 
byte[] bytes = "grant_type=client_credentials".getBytes("UTF-8"); 
OutputStream out = hURLConnection.getOutputStream(); 
out.write(bytes); 
out.flush(); 

경우 "RFC 6750, 2.2. Form-Encoded Body Parameter

는 클라이언트 ID와 클라이언트 비밀번호를 설정하려면 "과 함께 클라이언트 ID 및 클라이언트 비밀번호를 grant_type과 함께 요청 본문에 삽입 할 수 있습니다. 요청 매개 변수.

byte[] bytes = "grant_type=client_credentials&client_id=MyClientId&client_secret=MyClientSecret".getBytes("UTF-8"); 
+0

고마워요. 그것은 나를 도왔다. 요청의 본문에서 권한 부여 유형, 클라이언트 ID 및 클라이언트 비밀 정보를 전송했습니다. – Daddyo