# 개인 Gmail + OAuth로 Meet 자동 생성 (0원)

Workspace / 서비스 계정 없이, **관리자 개인 Gmail** 캘린더에 일정+Meet을 만듭니다.

## 전제

- Google Cloud에서 **OAuth 클라이언트**를 이미 만들었음 (데스크톱 또는 웹)
- OAuth 동의 화면이 **테스트** 모드면, 동의 화면에 **테스트 사용자**로 본인 Gmail을 추가해야 함
- **Calendar API** 활성화 필수

---

## 1. Refresh Token 한 번 발급

프로젝트에 포함된 스크립트를 사용합니다.

```bash
cd edu-pro
node scripts/get-google-refresh-token.mjs
```

실행 후 안내에 따라:

1. 브라우저가 열리거나 URL이 출력됨 → **본인 Gmail**로 로그인·허용  
2. 주소창의 `code=` 값을 복사해 터미널에 붙여넣기  
3. 출력된 **`refresh_token`** 을 안전한 곳에 복사  

> Client ID / Secret 은 스크립트 실행 시 환경변수 또는 입력으로 넣습니다.  
> **절대 git / 프론트 .env에 refresh_token 을 넣지 마세요.** Supabase secrets 전용입니다.

수동(curl) 방법은 스크립트 파일 주석을 참고하세요.

---

## 2. Supabase Secrets

```bash
supabase secrets set GOOGLE_OAUTH_CLIENT_ID="707848915072-xxxx.apps.googleusercontent.com"
supabase secrets set GOOGLE_OAUTH_CLIENT_SECRET="GOCSPX-xxxx"
supabase secrets set GOOGLE_OAUTH_REFRESH_TOKEN="1//0xxxx"
supabase secrets set GOOGLE_CALENDAR_ID=primary
```

(이전에 쓰던 `GOOGLE_SA_*` 는 더 이상 필요 없습니다.)

---

## 3. Edge Function 배포

```bash
supabase functions deploy create-meet
```

---

## 4. 프론트 `.env`

```env
VITE_MEET_API_URL=https://fzskpponrniqqnbowibl.supabase.co/functions/v1/create-meet
# VITE_MEET_API_KEY 는 비워 두면 anon key Bearer 사용
VITE_MEET_API_KEY=
```

```bash
npm run dev
```

---

## 5. 확인

관리자 → 강의 세션 → 「강의 열기」  
→ 실제 `https://meet.google.com/...` 링크가 붙고, 본인 Google 캘린더에 일정이 생기면 성공입니다.

실패 시 Edge Function 로그와 응답 `error` 확인:

- `invalid_grant` → refresh token 재발급 (`prompt=consent` 로 다시)
- `access_denied` → 테스트 사용자에 Gmail 추가
- `Calendar API has not been used` → API 활성화 후 수 분 대기

---

## 보안

- Client Secret / Refresh Token 은 **Edge secrets만**
- 캡처·채팅에 Secret이 노출됐다면 Google Cloud에서 클라이언트를 재발급하는 것을 권장합니다
