Weekly TIL - Day 1

2025. 4. 16. 09:50·Weekly TIL

⭐️ 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
'Weekly TIL' 카테고리의 다른 글
  • Weekly TIL - Day 4
  • Weekly TIL - Day 3
  • Weekly TIL - Day 2
  • TIR 작성 해보기
KoesJin
KoesJin
hEELo
  • KoesJin
    Seok DevLog
    KoesJin
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Back End (31)
        • DataBase (15)
        • JAVA (12)
        • JDBC (4)
      • Front End (9)
        • HTML5 & CSS (3)
        • Java Script (6)
        • REACT (0)
      • Server (9)
        • JSP - TomCat - Servlet (7)
        • Spring Boot (2)
      • GitHub (1)
      • AWS (1)
      • IT 지식 (기술면접 대비) (20)
      • Weekly TIL (39)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    css
    weekly til - day 39
    dml
    View
    commit
    INNER JOIN
    order by
    DDL
    MVC 패턴
    weekly til - day 38
    weekly til - day 41
    from
    select
    DAO
    weekly til - day 43
    where
    GC
    weekly til - day 40
    순서에 대하여
    exception
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
KoesJin
Weekly TIL - Day 1
상단으로

티스토리툴바