https://accounts.google.com/o/oauth2/token에서 토큰을 요청할 때 '잘못된 요청'에 대한 가능한 이유 때문에 많은 시간을 소비 한 후 필자는이 코드가 서버에서 '나쁜 요청'응답을 얻을 수없는 이유를 묻기로했습니다. ..Google의 oauth 엔드 포인트가 '잘못된 요청'을 반환하고 있지만 그 이유는 무엇입니까?
String url = "https://accounts.google.com/o/oauth2/token";
HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
con.setChunkedStreamingMode(0);
con.setRequestMethod("POST");
con.setRequestProperty("Host", "accounts.google.com");
con.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded");
con.setRequestProperty("code", authCode);
con.setRequestProperty("client_id",
"[CLIENT_ID]");
con.setRequestProperty("client_secret", "[CLIENT_SECRET");
con.setRequestProperty("redirect_uri",
"http://localhost:8080/login");
con.setRequestProperty("grant_type", "authorization_code");
// Send post request
con.setDoOutput(true);
서버가 내용 길이와 관련된 오류를 반환했기 때문에 con.setChunkedStreamingMode(0)
을 설정해야했습니다.
아이디어가 있으십니까? 페이로드를 한 줄에 입력해야 할 수 있습니까? 방법?
나는 정확하다고 생각합니다. 음, 다른 질문이 있습니다 ... 특정 oauth 속성 만 쿼리 문자열에서 참조해야합니까? 또는 거기에 content-type도 설정해야합니까? – JPCF
쿼리 문자열 매개 변수 만. Content-Type은 HTTP 헤더로 설정되어야합니다. Google 문서에서 샘플 HTTP POST를 표시하도록 답변을 업데이트했습니다. –
고마워요! 나는 soooo 피로했다! – JPCF