API 인증
지갑 기반 인증
MetaCivia API는 지갑 주소를 기반으로 인증합니다. 모든 요청에 X-Wallet-Address 헤더를 포함해야 합니다.
예시
fetch('https://metacivia-backend.pages.dev/api/citizen/status', {
headers: {
'X-Wallet-Address': '0x1234567890123456789012345678901234567890123456789012345678901234'
}
})지갑 주소 형식
- SUI 지갑 주소 형식:
0x로 시작하는 64자리 16진수 - 총 길이: 66자 (0x 포함)
API Key 인증 (외부 시스템)
외부 시스템에서 MetaCivia API를 사용하려면 API Key가 필요합니다.
API Key 발급
- Architect에게 API Key 발급 요청
- 또는 Cloudflare 환경 변수에서 설정
사용 방법
fetch('https://metacivia-backend.pages.dev/api/external/citizen/0x.../credit', {
headers: {
'X-API-Key': 'your-api-key-here'
}
})CSRF 보호
상태 변경 요청(POST, PUT, DELETE)은 CSRF 토큰이 필요할 수 있습니다.
CSRF 토큰 획득
GET 요청 시 응답 헤더에 X-CSRF-Token이 포함됩니다.
CSRF 토큰 사용
// 1. GET 요청으로 토큰 획득
const response = await fetch('/api/citizen/status', {
headers: { 'X-Wallet-Address': walletAddress }
})
const csrfToken = response.headers.get('X-CSRF-Token')
// 2. POST 요청에 토큰 포함
await fetch('/api/ritual/submit', {
method: 'POST',
headers: {
'X-Wallet-Address': walletAddress,
'X-CSRF-Token': csrfToken
},
body: JSON.stringify({ ... })
})에러 처리
인증 실패
인증이 실패하면 401 Unauthorized 또는 403 Forbidden 응답이 반환됩니다.
{
"error": "Wallet address required"
}권한 부족
Architect 전용 API에 일반 시민이 접근하면 403 Forbidden이 반환됩니다.