채팅 7875532826 / 메시지 1472
텍스트 메시지
대화방 Snoopybot
발신자 Snoopybot (@snoopy0816bot)
발신 시각 2026-02-18T01:43:05+00:00
메시지
오케이, 이건 거의 100% 클라이언트 ID/Secret 쌍 불일치입니다.
(프로젝트ID 문제보다 더 핵심)
지금은 복붙 방식 멈추고, json 파일 방식으로 가는 게 가장 빨라요.
가장 확실한 해결 순서
1) Google Cloud에서 새로 만들기
• APIs & Services → Credentials
• Create Credentials → OAuth client ID
• 타입: Desktop app
• 생성 후 Download JSON (client_secret_....json)
2) JSON 파일로 바로 실행
파일을 예: ~/Downloads/client_secret_xxx.json 에 두고 아래 실행:
python3 - <<'PY'
import json
from google_auth_oauthlib.flow import InstalledAppFlow
path = '/Users/leehsong/Downloads/client_secret_xxx.json' # 파일명 바꿔주세요
cfg = json.load(open(path,'r',encoding='utf-8'))
flow = InstalledAppFlow.from_client_config(cfg, ['https://www.googleapis.com/auth/calendar'])
creds = flow.run_local_server(port=0, open_browser=True)
print('REFRESH_TOKEN=', creds.refresh_token)
print('CLIENT_ID=', cfg['installed']['client_id'])
print('CLIENT_SECRET=', cfg['installed']['client_secret'])
print('PROJECT_ID=', cfg['installed'].get('project_id'))
PY
브라우저 승인 후 REFRESH_TOKEN이 나오면 성공입니다.
3) 저장
openclaw secret set GOOGLE_CLIENT_ID <출력값>
openclaw secret set GOOGLE_CLIENT_SECRET <출력값>
openclaw secret set GOOGLE_REFRESH_TOKEN <출력값>
openclaw secret set GOOGLE_CALENDAR_IDS primary
그래도 401이면 체크
• OAuth 동의화면이 Testing이면, 본인 Gmail을 Test users에 추가
• 클라이언트가 Web application 타입이면 다시 Desktop으로 생성
• 같은 프로젝트의 ID/Secret인지 확인
원하면 지금부터는 제가 “다음에 누를 메뉴”까지 1단계씩 짧게 코칭해드릴게요.