Google Calendar API 적용기
GCP 세팅
가장 먼저 프로젝트를 만들고 API 사용하도록 체크해줘야 한다.

클릭만 하면 사용 가능해진다.

그 다음 OAuth 기반 인증 방식을 사용하기 위해 동의 화면 생성과 인증 정보(credential) 을 발급받아야 한다.
동의 화면에서는 외부 로 타입을 지정하고 나머지는 그냥 pass 하면 된다.
인증 정보는 OAuth2.0 Client ID (가운데) 를 생성해서 json 으로 다운 받는다.

이때, 데스크탑 앱 으로 발급해야한다. 자칫 웹앱으로 해서 redirectURL 관련 에러가 발생할 수 있다.

하지만 이걸론 API 사용이 불가하다. 아직 게시하지 않았기 때문이다.

이를 위해 앱 게시하거나 테스트 유저를 선정해야한다.

테스트 유저는 진짜 계정의 이메일로 추가 가능하다. 위 알림 내용처럼 테스트 환경에서만 접근 가능하다.

개발
주요 로직은 인증 에 있다. 최초 로그인 시에 access token 과 refresh token 이 필요하기 때문에 이를 token.json 에 저장하고 2번째 API 요청부터는 그대로 이를 사용해서 브라우저가 안켜지게한다.
"google-auth-library": "^8.9.0",
"@google-cloud/local-auth": "^2.1.0",
"googleapis": "^105.0.0",올바르게 API 요청에 성공하면 아래와 같이 응답 데이터를 받을 수 있다.

발생한 타입 오류
패키지가 업데이트 되면서 타입 쪽에서 에러가 발생했다.
client = google.auth.fromJSON() // JsonClient
client = authenticate() // ERR :: OAuth2Client 타입 기대. OAuth2Client !== JsonClient그래서 편법으로 google-auth-library 에서 제공하는 타입 OAuth2Client 를 devDependecies 로 추가해서 사용했다.
// google-auth-library (v8.9.0)
// https://github.com/googleapis/google-auth-library-nodejs/issues/1402#issuecomment-1656182442
import type { OAuth2Client } from "google-auth-library";
const client = google.auth.fromJSON(credentials);
return client as OAuth2Client;개선해야할 사항
토큰 발급할 때마다 브라우저에서 켜지는 OAuth Login 을 진행해야한다. 서버리스에서 진행하려면 어떻게 해야할까?
json 파일을 저장할 s3 와 이에 대한 권한 세팅 (읽기/쓰기) 도 추후 시도해봐야 한다.