이번 주에는 개발할 작은 프로그램이 있었지만 localhost에서 Java Servlet을 사용하여 웹 응용 프로그램을 만들어야했습니다.이 웹 응용 프로그램은 다음을 수행해야합니다.Google 작업으로 인증 할 수 없습니다 - 숙제
- REST
첫 번째 부분은 쉬웠다없는 항아리 libs와를 사용하여 JSON, 여기에 아무 문제
을 구문 분석 할 수 두 번째 부분은 다소 쉽습니다. 콜백을 설정하고 코드를 수신 할 수있는 Google 개발자 콘솔에서 새 클라이언트 ID를 만들어야했습니다. 문제가 발생한 경우를 대비하여 여기에 넣을 것입니다. 그것 :
Login.java
...
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
System.out.println("--New login request was received --");
resp.setStatus(302);
resp.setHeader("Location", GoogleStuff.AUTH_LINK);
}
...
callback.java
...
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
Cookie c = new Cookie("googleCode", req.getParameter("code")); c.setMaxAge(60*60); //1 Hour
//Example code received from Google
//4/6POIUYwZA3tFCnX_2feRDGiPMQOU7At8HyfOzemMkOY.wtiPpsElo8wZoiIBeR5Q2m9sqEaFkwI
resp.addCookie(c);
resp.setStatus(302);
resp.setHeader("Location","searchOrg");
}
...
내 문제는 세 번째 부분에 제공 , 나는 구글 (인증 안) 401 응답 코드를 얻을 , 나는 난 확신
뭔가 잘못하고 있지만, 나는 무엇이 잘못되었는지를 정말로 모른다. 이것은 잘못된 모든 아마, 그래서 그것을 참아 : P
참고 : 나는 구글 개발자 콘솔을 사용
...
public static String AUTH_LINK = "https://accounts.google.com/o/oauth2/auth?"+
"scope=https://www.googleapis.com/auth/tasks&"+
"redirect_uri=http://localhost:5005/callback&"+
"response_type=code&" +
"client_id=" + FirstHttpServer.CLIENT_ID +
"&approval_prompt=force";
...
public static void addTask(Issue i, String googleCode){
try {
String postURL = "https://www.googleapis.com/tasks/v1/lists/%40default/tasks?key=" + MyServer.API_KEY;
URL url = new URL(postURL);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/json");
connection.setRequestProperty("Authorization", googleCode);
BufferedWriter httpRequestBodyWriter = new BufferedWriter(new OutputStreamWriter(connection.getOutputStream()));
httpRequestBodyWriter.write(i.toJson());
httpRequestBodyWriter.close();
Scanner httpResponseScanner = new Scanner(connection.getInputStream());
while(httpResponseScanner.hasNextLine())
System.out.println(httpResponseScanner.nextLine());
httpResponseScanner.close();
} catch (IOException e) {
System.out.println(e.toString());
throw new RuntimeException();
}
GoogleStuff.java 브라우저 에 대한 키를 생성 한 API 키를 얻으려면
나는 며칠 동안 그 일을 해왔다. 그러나 다른 프로젝트들도 내 시간을 바짝 두들겨서이 문제를 발견하는 것이 점점 힘들어졌다. 나는 당신의 도움을 요청하는 이유 다. :)
미리 감사드립니다.
저는 Google 할 일을 도와 드릴 전문 지식이 없지만 StackOverflow에 오신 것을 환영하며 첫 번째 질문에 당신을 칭찬한다는 의견을 말씀드립니다 - 훌륭한 형식을 가지고 있으며 문제를 직접 풀어보고 잘했음을 보여 줬습니다! –
멋진 단어를 보내 주셔서 감사 드리며 몇 분 동안 포맷팅으로 놀아 보면서 모든 것을 이해하기 쉬웠습니다.내 질문에 답하는 데 약간의 시간을 허비한다면, 다른 사람들을 위해 가능한 한 쉽게 만들기 위해 내 것을 사용하는 것이 좋습니다. –