소셜 로그인 (OAuth)
앱 멤버(최종 사용자)를 위한 소셜 로그인 API입니다. Google, Naver, GitHub, Discord 4개 프로바이더를 통해 간편하게 로그인할 수 있습니다.
💡 이 API는 여러분이 만든 앱의 사용자가 소셜 계정으로 로그인하는 기능입니다. 콘솔 계정 로그인이 아닙니다.
지원 프로바이더
| 프로바이더 | OAuthProvider 값 |
|---|---|
'google' | |
| Naver | 'naver' |
| GitHub | 'github' |
| Discord | 'discord' |
⚠️ 현재 SDK가 지원하는 OAuth 프로바이더는 위 4개뿐입니다. Kakao / Apple 등 다른 프로바이더는 지원하지 않습니다.
활성화된 프로바이더 조회
typescript
const { providers } = await cb.oauth.getEnabledProviders()
// [{ provider: 'google', client_id: '...' }, { provider: 'github', client_id: '...' }]소셜 로그인 실행
typescript
// 리다이렉트 방식 로그인 (권장) — 모든 환경에서 안정적
await cb.oauth.signIn('google', 'https://myapp.com/auth/callback')
// 페이지가 Google 로그인으로 리다이렉트됨
// 팝업 방식 로그인
// ⚠️ 배포 환경에서 COOP 정책으로 인해 팝업 닫힘 감지가 제한될 수 있습니다
try {
const result = await cb.oauth.signInWithPopup('google', 'https://myapp.com/auth/callback')
console.log('로그인 성공:', result.member_id)
if (result.is_new_member) {
console.log('신규 회원입니다!')
}
} catch (error) {
console.error('로그인 실패:', error)
}로그인 콜백 처리
typescript
// 콜백 페이지에서 결과 처리 (리다이렉트 방식)
const result = cb.oauth.getCallbackResult()
if (result) {
if (result.error) {
console.error('로그인 실패:', result.error)
} else {
console.log('로그인 성공:', result.member_id)
console.log('신규 회원:', result.is_new_member)
// 토큰은 자동으로 저장됨
// 메인 페이지로 이동
window.location.href = '/'
}
}HTTP API
활성화된 프로바이더 목록 조회
bash
curl -X GET "https://api.connectbase.world/v1/public/oauth/providers" \
-H "X-Public-Key: cb_pk_your_public_key"인증 URL 조회 (중앙 콜백 방식)
bash
curl -X GET "https://api.connectbase.world/v1/public/oauth/google/authorize/central?app_callback=https%3A%2F%2Fmyapp.com%2Foauth%2Fcallback" \
-H "X-Public-Key: cb_pk_your_public_key"응답:
json
{
"authorization_url": "https://accounts.google.com/o/oauth2/auth?..."
}콜백 (Connect Base 가 자동 처리)
OAuth 프로바이더가 GET /v1/public/oauth/:provider/callback 으로 직접 호출하는 엔드포인트입니다.
서버가 토큰을 발급한 뒤, app_callback 으로 지정한 앱 URL 로 다음 query 와 함께 리다이렉트합니다:
https://myapp.com/oauth/callback?access_token=...&refresh_token=...&member_id=...&is_new_member=true
📌 SDK 의
cb.oauth.getCallbackResult()가 이 URL 파라미터를 파싱해 토큰을 자동 저장합니다. 별도로POST .../callback으로code를 전달하는 패턴은 사용하지 않습니다.