Kakao
Emulated Kakao API (kauth OAuth + kapi user/talk) for local development and testing.
A stateful emulator for Kakao’s kauth (OAuth 2.0) and kapi (user/talk) APIs.
Included now:
- OAuth 2.0 authorize + token (authorization_code and refresh_token grants)
- User API:
/v2/user/me, access-token info, logout, unlink - KakaoTalk self-memo send (
/v2/api/talk/memo/default/send)
# From this repo (after `bun install && bun run build`)bun packages/emulate/dist/index.js --service kakao
# Or from the published packagenpx @pleaseai/emulate --service kakaoA single service starts on the base port (default 4000). Use -p <port> to
change it. When started alongside other services, ports are assigned
sequentially from the base port (kakao’s slot is 4000).
- OAuth token exchange authenticates with
client_id(andclient_secretif the app is configured with one). kapicalls (user/talk) useAuthorization: Bearer <access_token>.
# 1. Authorization code — in CI, ?user_id= auto-approves without the login pagecurl -i "http://localhost:4000/oauth/authorize?client_id=kakao_rest_api_key_example\&redirect_uri=http://localhost:3000/api/auth/callback/kakao&response_type=code&user_id=1001"# → redirect with Location: .../callback?code=<code>
# 2. Exchange the code for tokenscurl -X POST http://localhost:4000/oauth/token \ -d "grant_type=authorization_code&client_id=kakao_rest_api_key_example&code=<code>\&redirect_uri=http://localhost:3000/api/auth/callback/kakao"# → {"token_type":"bearer","access_token":"...","refresh_token":"...","expires_in":21599}
# 3. Fetch the user profilecurl http://localhost:4000/v2/user/me -H "Authorization: Bearer <access_token>"
# 4. Send a KakaoTalk self-memo (template_object is a JSON-encoded string)curl -X POST http://localhost:4000/v2/api/talk/memo/default/send \ -H "Authorization: Bearer <access_token>" \ -d 'template_object={"object_type":"text","text":"Hello from the emulator"}'Inspect sent memos (no auth) at GET /internal/talk/memos.
Seed Config
Section titled “Seed Config”Add a kakao: section to emulate.config.yaml (or pass --seed <file>):
kakao: apps: - client_id: kakao_rest_api_key_example client_secret: kakao_client_secret_example redirect_uris: [http://localhost:3000/api/auth/callback/kakao] users: - user_id: 1001 nickname: 홍길동 email: hong@example.com profile_image_url: https://k.kakaocdn.net/dn/profile.jpg