OAuth2를 사용하는 사이트에 대한 인증을 시도하고 내 세션 객체에 토큰을 저장하려고합니다. 내 웹 앱은 처음에는 토큰이 있는지를 먼저 확인하고없는 경우 외부 사용자가 로그인하여 내 앱으로 리디렉션되는 외부 사이트의 로그인 페이지로 리디렉션합니다. 지금까지, 아주 좋아,이 작품. 내 앱이 나를 외부 사이트 (Mendeley)로 안내하고, 거기에 로그인 한 다음, 예상했던 앱의 URL로 다시 리디렉션합니다. 나는 '경우 토큰을 요청하는 OAuth2가 401을 반환합니다.
내 응용 프로그램을 다시 리디렉션
, 나는이 코드 및 요청에 상태 매개 변수를 기대하고, 내가이 참조 할, 그래서 내가 곧 정상 궤도에있어 가정 (날 막을 m 잘못된). 그렇다면 정확하게 이해하면 코드을 다시 멘델리 서비스에 게시하여 내 승인 토큰을 얻으려고합니다. 그게 전부가 폭발하는 곳입니다.URL url = new URL("https://api-oauth2.mendeley.com/oauth/token");
HttpsURLConnection connection = (HttpsURLConnection) url
.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
String authString = getClientId() + ":" + "[MY CLIENT SECRET]";
System.out.println("auth string: " + authString);
byte[] authEncBytes = Base64.getUrlEncoder().encode(
authString.getBytes());
String authStringEnc = new String(authEncBytes);
System.out.println("Base64 encoded auth string: " + authStringEnc);
connection.addRequestProperty("Authorization", "Basic "
+ authStringEnc);
connection.setDoOutput(true);
OutputStream os = connection.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(os);
writer.write("scope=all&grant_type=authorization_code");
writer.write("&client_id=");
writer.write(getClientId());
writer.write("&code=");
writer.write(code);
writer.write("&redirect_uri=");
writer.write(getMendeleyRedirectUrl(request));
writer.write("&client_secret=");
writer.write("[MY CLIENT SECRET]");
writer.flush();
writer.close();
int responseCode = connection.getResponseCode();
BufferedReader reader = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
내가 얻을 응답 코드가 예외를 throw 연결에서 가져올 입력 스트림을 가져옵니다하려고 마지막 줄에 (401), 그리고 그 날에 감각이 401을 반환 감지하게하고 있지 않습니다 하나.
예, redirect_uri가 인코딩됩니다. (로그인에 대한 초기 리디렉션은 다른 방법으로는 작동하지 않을 것이라고 생각합니다.)
My Spidey Sense는 나에게 분명해야 할 부분을 간과하고 있다고 말하지만 내가 생각할 수있는 모든 것을 시도했습니다. 어떤 도움이라도 대단히 감사하겠습니다.
편집 : 인증 헤더가 지금 응답 코드 (400)
인증 기본은 base64 인코딩 " : "이어야합니다.이 경우 사용자는 앱 ID 및 비밀번호 앱 비밀번호가됩니다. –
fbiagi