-
Spring Boot. GoogleIdTokenVerifier's parameters(HttpTransport, JsonFactory) : How to know that?개발 기록 2023. 8. 10. 12:34728x90
환경.
java 17
spring boot 3.1.1
google-api-client:2.2.0
목표.
1. GoogleIdTokenVerifier 생성에 필요한 파라메터를 찾는다. (HttpTransport, JsonFactory)
2. 사람들은 이것을 어떻게 알아냈는지 알아본다.문제.
https://developers.google.com/identity/gsi/web/guides/verify-google-id-token?hl=ko
구글 인증 문서를 보면 Google Api Client Library를 이용한 인증 방법이 나와있다.
여기서 GoogleIdTokenVerifier 객체를 사용하는데 문제는 객체 생성에 필요한 파라메터 transport, jsonFactory에 관련된 설명이 없다.GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(transport, jsonFactory) .setAudience(Collections.singletonList(CLIENT_ID)) .build();
해결.
구글에 검색해보면 stack overflow에 답변은 있다.
NetHttpTransport와 GsonFactory를 사용하라는 것이다.
import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.gson.GsonFactory; GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(new NetHttpTransport(), new GsonFactory())
여기서 믿음이 있다면 답만 확인하고 사용한다.
하지만
이 사람들은 이걸 어떻게 알아냈을까?
이게 정답일까?
하는 생각이 들 때가 있다.
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
믿음이 없으면 어떻게 해야할까??
1. 문서를 열심히 찾아본다.
- HttpTransport
문서를 보면 사용법에 대해 조금 더 자세히 나와있다.
=> 문서를 찾아보는게 중요하다.
- 간단히 요약하면 환경에 따라 다른 것을 사용해라.
google app engine일 경우: UrlFetchTransport를 사용해라. - 안드로이드나 자바의 경우: 버전이나 요구에 따라 적당한 것을 사용해라.
(AndroidHttp, NetHttpTransport, GoogleNetHttpTransport, ApacheHttpTransport)
- JsonFactory
문서를 봐도 어떤 객체를 써야하는지 잘 모르겠다.
=> stack overflow의 답변과 달린 댓글을 보고 대충 객체를 파악한 후 재검색을 반복한다.
2. IDE를 이용한다. (현재 intellij 이용중)
프로그래밍에는 2가지 방법이 있는 듯하다.
1. 직접 구현한다.
2. 남이 구현한 걸 사용한다.
IDE는 내가 구현하는 것 뿐만 아니라 남이 구현해 놓은 것을 찾아 주는 도구이다.
생각해보면 직접 구현보다 남이 구현한 것을 더 많이 사용할 것이다.
직접 구현은 힘든 과정이 예상되니 당연히 2번을 먼저 해본다.
인텔리j를 사용중이라면 JsonFactory에 커서를 두고 ctrl+alt+b 를 눌러보자.
구현된 곳으로 이동(2개 이상이라면 선택이동)하는 단축키이다.
(이클립스 단축키는 모르겠다.)JsonFactory는 GsonFactory와 MockJsonFactory가 구현하고 있다고 알려준다.
GsonFactory를 사용한다.
HttpTransport도 똑같이 찾을수 있다.
보기에 사용할 만한게 ApacheHttpTransport와 NetHttpTransport가 있다.
문서에서 보았던 것처럼 내 환경에 맞는 것을 선택해서 사용한다.
결론.
IDE를 잘 활용하면 검색 시간을 줄일 수 있다. == 개발 속도가 빨라진다.
stack overflow에 달린 답변도 이런 식으로 찾아내지 않았을까? 하고 조심스럽게 추측해본다.
의문) JsonFactory는 GsonFactory밖에 선택할 수 없어서 문서에 자세히 적혀있지 않았던 걸까?
728x90반응형'개발 기록' 카테고리의 다른 글
Spring boot. JPA Expecting a SELECT query (0) 2023.09.20 Spring Boot. How to get custom header value using @RequestHeader (0) 2023.08.31 Spring Boot. @PathVariable with a dot(.) gets truncated (0) 2023.07.03 MySQL. 'Select tables optimized away' vs 'Using index' (0) 2023.06.30 MyBatis. BindingException: parameter '~~' not found (0) 2023.05.31 - 간단히 요약하면 환경에 따라 다른 것을 사용해라.