Documentation Index
Fetch the complete documentation index at: https://docs.checkable.app/llms.txt
Use this file to discover all available pages before exploring further.
🎯 체커블 OAuth2 API란?
체커블 OAuth2 API는 여러분이 만드는 앱에서 OAuth2 인증을 통해 체커블과 연동을 하고, 챌린지 목록을 조회하고, 특정 챌린지에 인증을 업로드할 수 있게 해주는 API입니다.
전체 플로우
- OAuth2 인증: 앱에서 체커블 OAuth2 인증을 통해 사용자 인증
- 챌린지 조회: 사용자가 참여 중인 챌린지 목록 조회
- 인증 업로드: 특정 챌린지에 메시지와 이미지로 인증 업로드
주요 기능
- OAuth2 인증: 표준 OAuth2 프로토콜을 통한 안전한 인증
- 사용자 정보: OAuth2 토큰을 통한 사용자 정보 조회
- 챌린지 조회: 사용자가 참여 중인 챌린지 목록 조회
- 인증 업로드: 챌린지에 메시지와 이미지로 인증 업로드
사용 시나리오
- 피트니스 앱: 운동 완료 후 체커블 챌린지에 자동 인증
- 학습 앱: 공부 시간 기록 후 체커블 챌린지에 자동 인증
- 생산성 앱: 목표 달성 후 체커블 챌린지에 자동 인증
📋 사전 준비사항
OAuth2 클라이언트 발급
🔐 OAuth2 인증 플로우
1. Authorize - 인증 코드 요청
앱에서 사용자를 체커블 OAuth2 인증 페이지로 리다이렉트:
https://checkable.app/auth/member/oauth2/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&scope=all&state=YOUR_STATE
2. Code - 인증 코드 수신
사용자가 체커블에 로그인하고 앱에 권한을 부여하면, 인증 코드가 포함된 URL로 리다이렉트됩니다:
YOUR_REDIRECT_URI?code=AUTHORIZATION_CODE&state=YOUR_STATE
3. Token - 액세스 토큰 교환
인증 코드를 액세스 토큰으로 교환:
POST /api/auth/member/oauth2/token HTTP/1.1
Host: checkable.app
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&
client_id=YOUR_CLIENT_ID&
code=AUTHORIZATION_CODE&
redirect_uri=YOUR_REDIRECT_URI
응답:
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token_expires_in": 2592000,
"scope": "all"
}
📊 API 활용 예시
1. 사용자 정보 조회
액세스 토큰을 사용하여 사용자 정보를 조회합니다:
GET /api/auth/member/oauth2/me HTTP/1.1
Host: checkable.app
Authorization: Bearer ACCESS_TOKEN
응답:
{
"member": {
"id": 123,
"name": "discord_username",
"email": "user@example.com"
}
}
2. 챌린지 목록 조회
사용자가 참여 중인 챌린지 목록을 조회합니다:
POST /api/public/challenges HTTP/1.1
Host: checkable.app
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
응답:
{
"challenges": [
{
"uuid": "challenge-uuid",
"title": "챌린지 제목",
"guildName": "디스코드 서버명",
"channelName": "채널명",
"discordChannelId": "123456789",
"discordMessageId": "987654321"
}
]
}
3. 인증 업로드
특정 챌린지에 인증을 업로드합니다:
POST /api/public/challenges/{challengeUuid}/upload-message HTTP/1.1
Host: checkable.app
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{
"message": "오늘 운동 완료!",
"imageData": "base64-encoded-image-data"
}
응답:
{
"messageId": "discord-message-id"
}
🔒 보안 고려사항
- 토큰 보안: OAuth2 액세스 토큰은 안전하게 보관하고 정기적으로 갱신
- HTTPS 사용: 모든 API 통신은 HTTPS를 통해 이루어져야 함
- 토큰 범위: 필요한 최소한의 권한만 요청
- 입력 검증: 모든 입력 데이터는 적절히 검증
📞 지원
기술 지원
다음 단계