본문으로 건너뛰기

소셜 로그인 (OAuth)

앱 멤버(최종 사용자)를 위한 소셜 로그인 API입니다. Google, Naver, GitHub, Discord 4개 프로바이더를 통해 간편하게 로그인할 수 있습니다.

💡 이 API는 여러분이 만든 앱의 사용자가 소셜 계정으로 로그인하는 기능입니다. 콘솔 계정 로그인이 아닙니다.

지원 프로바이더

프로바이더OAuthProvider 값
Google'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 를 전달하는 패턴은 사용하지 않습니다.