이번 글은 구글 캘린더에서 특정 캘린더를 읽어오는 api에 대해서 정리할 예정이다.
우선 구글 계정에 접속하여,
https://console.cloud.google.com/
Google 클라우드 플랫폼
로그인 Google 클라우드 플랫폼으로 이동
accounts.google.com
위의 주소로 들어간다.
처음 들어가면 프로젝트가 없기때문에 새프로젝트를 선택하여 프로젝트를 하나 생성한다.

그 후 왼쪽 상단의 메뉴 > API 및 서비스 > 라이브러리로 접속하여 검색창에 calendar를 입력후 google calendar api에 들어가서 사용을 누르면 calendar api를 사용할 수 있게 된다.


이제 보안 권한을 위해서 왼쪽 상단의 메뉴 > API 및 서비스 > OAuth 동의화면으로 접속한다.

외부를 클릭하고 만들기를 선택 시 앱정보 입력창이 뜬다.

여러가지 작성하는 것이 나오지만, 필수 입력만 입력하면 된다.
그 다음에는 범위를 작성하는 것이 나온다. 이 곳에는 캘린더 사용에 필요한 범위를 작성할 수 있다.

범위 추가 또는 삭제를 선택한 후 직접 범위 추가에
https://www.googleapis.com/auth/calendar.readonly
를 입력해준다.
이 범위는 캘린더에 대한 읽기 권한만을 사용할 수 있다.

그리고 그 다음 테스트 사용자에 본인 이메일이나 테스트할 인원들에 대한 이메일 주소를 넣으면 OAuth 동의는 완료된다.
그 다음엔 인증정보를 받아야하기에
왼쪽 상단의 메뉴 > API 및 서비스 > 사용자 인증 정보에 접속한다.

사용자 인증 정보 만들기에 접속하여,

OAuth 클라이언트 ID를 선택한다.

이름을 입력하고, 리디렉션 URL을 입력한 후 만들기를 하면 된다.
리디렉션 URL은 api를 사용하기 위에 무조건 필요하기에 알고있어야한다.


다 만들고 나면 클라이언트 id와 보안 비밀번호가 생성된다.
이제 api를 사용하기 위한 보안 준비는 끝났다.
api를 사용하여 직접 사용하면 된다.
우선 api를 사용하기 위해서는 먼저 code값을 알아야하는데, code 값은
https://accounts.google.com/o/oauth2/v2/auth?
scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.events.readonly&
access_type=offline&
include_granted_scopes=true&
response_type=code&
state=state_parameter_passthrough_value&
redirect_uri=http%3A%2F%2Flocalhost%3A8080%2Ftest&
client_id=클라이언트 아이디
이 url로 접속을 하면 된다.
scope는 이 글에서는 읽기만 허용하기에 readonly로 하였고,
클라이언트 id는 마지막에 만든 id를 사용하면 되고 redirect_url은 아까 지정한 리다이렉트 url를 사용해야한다.
url 주소를 입력하게 되면

계정 선택을 먼저 하고,

여기서 계속을 선택한다.
그다음에도 계속을 선택하면 사이트에 연결할 수 없음 표시가 뜬다.
여기서 url을 확인해보면 code라고 적힌 값을 확인할수 있다. 저 코드를 복사하여 api를 사용하여 token 값을 받아야한다.
저기서 code값만 복사 후

나는 insomnia를 사용하고 있기에 insomnia로 보여줄 것이다.

post를 사용하여야되고,
url : https://oauth2.googleapis.com/token
code: 위에서 복사한 code,
나머지는 아까 받은 값들을 넣고, grant_type은 authorization_code를 입력한다.
그리고 전송을 하면,

이런 결과값을 받을 수 있다.
access_token을 이용하여, 캘린더 데이터를 가지고 올수 있다.
하지만 token값에 유효기한이 있기에 refresh_token을 사용하여 token값을 업데이트 해주어야한다.

다음과 값이 code값과 redirect_url을 제외하고 refresh_token을 입력한 후 grant_type을 refresh_token으로 변경하면,
token값을 새로 받아올 수 있다.
이 token 값을 사용하여 캘린더 읽기를 사용할 수 있다.
현재 나는 nestJs에서 사용하고 있기에, 다음 글은 nestJs에서 token값을 이용한 캘린더 받아오기 글을 쓸 예정이다.
읽어주셔서 감사합니다.
후속편인 nestJs에서 사용하는 법은
https://startedev-jay.tistory.com/20
[API/NestJs] 구글 토큰 값을 활용한 캘린더 데이터 받아오기
이번 글에서는 구글 console에서 받은 token 값을 활용한 구글 캘린더를 가져와 볼 예정이다. token과 refresh token 가져오는 법 및 권한 설정은 https://startedev-jay.tistory.com/19 [API] 구글 캘린더 읽어오기 위
startedev-jay.tistory.com
여기를 참고해주세요