본문으로 건너뛰기

소셜 로그인 (OAuth)

앱 멤버(최종 사용자)를 위한 소셜 로그인 API입니다. SDK OAuthProvider 타입 기준 6개 프로바이더를 지원합니다.

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

지원 프로바이더

프로바이더OAuthProvider 값비고
Google'google'
Naver'naver'
Kakao'kakao'
Apple'apple'relay 이메일 가능
GitHub'github'
Discord'discord'

📌 콘솔 → 인증 설정 → 소셜 로그인 에서 사용할 프로바이더를 ON 토글하고 Client ID / Secret 을 입력해야 합니다. 활성화된 프로바이더만 로그인 호출에 사용할 수 있습니다.

소셜 로그인 완료 시 AppMember.email 컬럼에 이메일이 자동 저장됩니다(Apple 의 경우 relay 주소).

활성화된 프로바이더 조회

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
// 콜백 페이지에서 결과 처리 (리다이렉트 방식) — 3.23.0+: getCallbackResult 는 Promise
const result = await 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 를 전달하는 패턴은 사용하지 않습니다.