⭐️ Today's summary
Spring Boot에서 구글 로그인을 구현한 뒤 구글 폼을 불러와서
구글 폼을 등록하는 과정을 배우며 구글의 accessToken을 이용한
API 기능을 구현을 하며 다른 API도 이용하여 구글의 다른 기능도
이용할 수 있을것 같다.
또한 Ajax 이용과 callback 함수를 사용함에 있어서 프로젝트가
종료된뒤 다음날 바로 수업을 진행하였더니 처음 사용 했을때 보다
많이 익숙해지고 이해도 잘되었다.
⭐️ Problem
구글 폼의 문제는 바로 폼을 불러 올 수 있는 것이 아닌,
구글 Drive에 우선 저장이 된다는 것을 알지 못하였었다.
⭐️ Try
구글 Drive API를 불러오고 그 뒤에
mimeType을 통해서 구글 폼을 불러 올 수 있었다.
[ 구글 폼 가져오는 코드 ]
// 구글폼 가져오기
// 이 메서드는 주어진 accessToken을 사용하여 구글 드라이브에서 구글 폼(mimeType이 'application/vnd.google-apps.form') 파일 목록을 조회합니다.
public List<File> getGoogleForms(String accessToken) {
// accessToken을 사용해 인증된 Drive API 클라이언트를 초기화합니다.
Drive driveService = getDriveService(accessToken); // getDriveService: accessToken 기반 인증 후 Drive 객체 반환
// 구글 API 응답을 받을 FileList 객체를 선언합니다.
FileList result = null;
try {
// Drive API를 통해 파일 목록 요청을 구성합니다.
result = driveService.files().list() // files() 메서드: 파일 관련 작업을 위한 인터페이스 반환
.setQ("mimeType='application/vnd.google-apps.form'") // setQ: 검색 조건으로 구글 폼 파일만 필터링
.setSpaces("drive") // setSpaces: 검색 범위를 'drive'로 지정
.setFields("files(id,name,createdTime)") // setFields: 응답에서 필요한 필드(id, name, createdTime)만 요청
.execute(); // execute: API 호출을 실행하여 결과를 받아옴
} catch (IOException e) {
// IOException 발생 시 예외 정보를 콘솔에 출력합니다.
e.printStackTrace();
}
// 조회된 파일 목록을 반환합니다.
return result.getFiles();
}
// accesstoken을 사용해서 google drive service 초기화
// 이 메서드는 주어진 accessToken을 기반으로 인증된 Google Drive API 클라이언트를 생성합니다.
private Drive getDriveService(String accessToken) {
// Drive API 클라이언트를 저장할 변수를 선언합니다.
Drive driveService = null;
try {
// 신뢰할 수 있는 HTTP 전송 객체를 생성합니다.
final NetHttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); // GoogleNetHttpTransport: 안전한 HTTP 연결을 제공
// JSON 직렬화/역직렬화를 위한 JacksonFactory 인스턴스를 가져옵니다.
final JacksonFactory jacksonFactory = JacksonFactory.getDefaultInstance();
// GoogleCredential.Builder를 사용하여 인증 정보를 구성합니다.
// 클라이언트 ID와 시크릿, 그리고 accessToken을 설정하여 인증 객체를 생성합니다.
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport) // HTTP 전송 방식 설정
.setJsonFactory(jacksonFactory) // JSON 처리 방식 설정
.setClientSecrets(googleLoginApiClientId, googleLoginApiClientSecret) // 클라이언트 ID와 시크릿 설정
.build()
.setAccessToken(accessToken); // accessToken을 설정하여 인증 완료
// 인증된 Credential을 사용하여 Drive API 클라이언트를 생성합니다.
driveService = new Drive.Builder(httpTransport, jacksonFactory, credential)
.setApplicationName("spring-test-app") // 애플리케이션 이름 설정
.build(); // Drive 서비스 인스턴스 생성
} catch (GeneralSecurityException e) {
// 보안 관련 예외 발생 시 예외 정보를 콘솔에 출력합니다.
e.printStackTrace();
} catch (IOException e) {
// I/O 관련 예외 발생 시 예외 정보를 콘솔에 출력합니다.
e.printStackTrace();
}
// 생성된 Drive API 클라이언트를 반환합니다.
return driveService;
}
'Weekly TIL' 카테고리의 다른 글
Weekly TIL - Day 5 (0) | 2025.04.19 |
---|---|
Weekly TIL - Day 4 (0) | 2025.04.18 |
Weekly TIL - Day 3 (2) | 2025.04.17 |
Weekly TIL - Day 2 (0) | 2025.04.16 |
TIR 작성 해보기 (1) | 2025.04.15 |