우선 API 연결을 위해서 다시 구글 콘솔로 진입.
추가해줬음.
우선 약간의 문제가 있다면 나는 데이터를 보여줄 캘린더 하나, 그리고 사용자가 천체 관측 일정을 관리할 수 있는 캘린더 하나를 이 구글 캘린더로 제공을 하고 싶었는데, 이게 내 공용 캘린더를 읽기전용으로 전환해서밖에 보여줄 수 없다는 결론에 도달함.
그게 아니라면 데이터를 보여줄 캘린더 따로 구축, 또 사용자는 구글 캘린더를 사용해야되는데, 이 과정에서 공용 데이터 캘린더 -> 사용자 캘린더로의 일정 복사도 복잡해질 것 같고..
그래서 일관성 있게 그냥 내 구글 계정에 캘린더를 희생하기로 함.
여튼 결론이 뭐냐?
- 공용 캘린더에 이벤트 추가 및 공유: 천문 이벤트와 관련된 정보를 하나의 공용 캘린더에 추가하고, 이 캘린더를 사용자들에게 읽기 전용으로 공개하면 사용자들은 앱이나 웹사이트에서 공용 캘린더에 있는 모든 정보를 볼 수 있음. 이 방식은 사용자가 별도 로그인 없이 접근 가능하게 해주니까 간편함.
- 사용자가 개인 캘린더로 복사: 공용 캘린더에 표시된 이벤트를 사용자가 자신의 개인 구글 캘린더로 복사할 수 있도록 기능을 제공할 수 있음. 이를 통해 사용자는 공용 캘린더에서 마음에 드는 천문 이벤트를 자신의 캘린더에 저장해 관리할 수 있음. 이 과정에서는 사용자의 구글 계정 인증이 필요.
- 통합 API 제공: 공용 캘린더와 사용자 개인 캘린더 모두를 API로 연결하여 관리할 수 있음. 백엔드에서 공용 캘린더에 데이터를 추가하거나 업데이트하고, 사용자가 요청하면 개인 캘린더로 복사하거나 자신의 계획을 추가하는 작업을 해줄 수 있음.
이게 결론임. 뭐 하다보면 또 바뀔 수도 있는데 일단은 내 계정에서 공용 캘린더부터 만들어보자.
일단 이렇게 생성하고.
이제는 구글 콘솔에서 서비스 계정 생성.
을 다 해주고..
Json파일을 받아서 인증하게끔 했고,
이렇게 클래스를 만들어서 코드를 짰음.
여기서
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.calendar.Calendar;
import com.google.auth.http.HttpCredentialsAdapter;
import com.google.auth.oauth2.GoogleCredentials;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import
할 때 써야할 것이 google에서 제공하는 Calendar를 사용해야되는데 JAVA
기본 Calendar
를 참조하고 있던 문제를 찾는데 조금 걸렸다. 어쩐히 함수가 계속 오류가 나더라.
여튼 저건 해결 했고,
이제는 컨트롤러와 서비스로 통신환경을 만들어놓으면 된다.
그래서 일단 구조는 이렇고 public
으로 나눈 이유는 공용 캘린더는 또 따로 관리하기 쉽게 하려고 나눴다.
그러니까~ 공용 캘린더부터 만져보자.
공용 캘린더의 CRUD 작성을 끝냈음.
Postman으로 확인해보면 됨.
.requestMatchers("/public/calendar/**").permitAll()
그전에 시큐리티에서 허용하게끔 해주자.
안해서 401 반환 받아서 하는 말은 절대 아님.
대충 해봤는데 성공 반환 했고.
이제 조회.
도 잘 되고,
수정도
잘 되고,
삭제도,
잘 됨.
CRUD는 잘 됐는데 이미지 잘 살펴 보면 ID로 등록한 것들 구분해야되는데 .. 굉장히 보기 힘듦.
그래서 이건 DB에 저장하면서 관리해야겠다고 결론이 났고 DB 저장 로직까지 끝낸 뒤에는 유성우 가시성 데이터를 캘린더에 추가할 수 있게끔 설계하면 될듯.
여튼 오늘은 여기까지.
'Coding History > Team Project' 카테고리의 다른 글
팀플) 캘린더에 유성우 일정 업데이트. (1) | 2024.11.28 |
---|---|
팀플) 캘린더 DB 저장. (0) | 2024.11.27 |
팀플) 유성우 데이터 백엔드 전략 (0) | 2024.11.25 |
팀플) 유성우 가시성 데이터 로직 수정 및 API 재배포 (2) | 2024.11.24 |
팀플) 유성우 데이터 통신 로직 (1) | 2024.11.23 |