GuidesAPI GuideChangelog
Log In
Guides

3. 사용자 인증하기

startLivePlayer() 에 사용자 토큰을 넘기면 회원으로, 넘기지 않으면 게스트로 시청합니다. 게스트도 SDK 가 임시 계정을 자동 발급하므로 채팅은 가능하지만 회원 전용 기능은 제한됩니다.

3. 사용자 인증하기 — 소스라이브 플레이어 Android SDK
예상 소요 시간: 10~30분 (토큰 발급 방식에 따라 상이)
📋 사전 조건: 2. 플레이어 실행하기 완료
게스트와 회원, 두 가지 상태

인증은 토큰을 넘기는지 여부 하나로 갈립니다.
토큰을 넘기지 않으면 게스트 모드로 실행되며, 회원 전용 기능만 제한됩니다.

게스트회원실제 서비스 권장
호출 token 을 넘기지 않음
(또는 null)
token = "발급받은 사용자 토큰"
계정 SDK 가 임시 계정을 자동 발급 자사 회원 계정
닉네임 GUEST + 10자리 난수
(설정에 따라 시청자가 직접 입력)
토큰 발급 시 지정한 닉네임
회원 구분값 memberType: "0" (비회원) memberType: "1" (회원)
채팅 방송 설정에 따라 갈립니다
게스트 참여를 허용하면 닉네임을 입력받아 채팅
허용하지 않으면 로그인 안내가 뜨고 플레이어가 닫힙니다
바로 가능
회원 전용 기능 제한 — 찜한 상품 등 memberType 이 회원일 때만 노출되는 기능이 있습니다 전체 사용
준비물 없음 토큰 발급 경로 1개 (아래)
💡 게스트 모드 우선 확인 — 토큰 없이 플레이어 실행을 확인한 뒤 회원 연동을 붙이면, 문제가 생겼을 때 원인이 인증인지 아닌지 구분됩니다.
게스트 계정 자동 발급

토큰을 넘기지 않으면 SDK 가 임시 계정을 서버에서 발급받아 사용합니다.
발급된 토큰은 기기에 저장되어 다음 실행에 재사용됩니다.

  • 1
    토큰을 넘기지 않은 상태로 플레이어를 실행하면, 기기에 저장된 게스트 토큰이 있는지 확인합니다.
  • 2
    없으면 GUEST + 10자리 난수 닉네임으로 임시 계정을 발급받습니다.
  • 3
    발급된 토큰을 기기에 저장합니다. 다음 실행에서는 같은 게스트로 인식됩니다.
💡 게스트가 무엇을 할 수 있는지는 방송 설정이 정합니다. 게스트 채팅 참여를 허용할지, 닉네임을 직접 입력받을지, 약관 동의·추가 정보를 수집할지가 서버 설정으로 제어됩니다. 코드로 바꾸는 값이 아니므로, 필요한 동작이 있으면 모비두 담당자 또는 카카오톡 채널로 문의하세요.
회원으로 연결하기

앞 단계에서 null 로 두었던 token 자리에 발급받은 토큰을 넣습니다.

Kotlin
SauceClient.startLivePlayer(
    context     = this,
    broadcastId = "라이브 ID",
    token       = userAccessToken   // 자사 로그인 사용자의 토큰
)
토큰 발급 위치

앱이 소스라이브에 직접 토큰을 요청하는 방법은 제공되지 않습니다.
자사 백엔드가 토큰을 만들어 앱에 내려 주는 구조가 유일한 경로입니다.

  • 1
    사용자가 앱에 로그인하면 자사 서버가 회원을 확인합니다.
  • 2
    자사 서버가 소스라이브 규격으로 토큰을 만들어 앱에 응답합니다.
    닉네임·회원 식별자·회원 구분 같은 정보를 토큰 안에 담습니다.
  • 3
    앱은 받은 토큰을 startLivePlayer()token 에 그대로 전달합니다.
    앱의 역할은 전달까지입니다. 토큰을 해석하거나 가공하지 않습니다.
비밀키가 서버에만 있어 안전합니다. 앱을 분석해도 토큰을 위조할 수 없습니다. 그래서 앱에서 직접 발급받는 경로를 두지 않습니다.
💡 토큰 생성 규격 — 서버에서 어떤 형식으로 만들어야 하는지는 JWT 토큰 생성 가이드에 정리되어 있습니다.
토큰 거부 시 동작

전달한 토큰이 유효하지 않으면 오류를 표시하지 않고 게스트 계정으로 대체합니다.
플레이어는 정상적으로 재생되므로, 로그인했는데 게스트로 보이는 상황이 생길 수 있습니다.

증상가장 흔한 원인확인 방법
로그인했는데 닉네임이 GUEST… 로 보임 토큰이 만료·위조·형식 오류로 검증에 실패해 게스트로 대체됨 Logcat 에서 SauceLive 태그의 validationToken 로그 확인
회원 전용 기능이 보이지 않음 토큰이 회원(memberType: "1")으로 발급되지 않음 토큰 발급 시 회원 구분값을 확인
이전 시청자의 게스트 닉네임이 계속 유지됨 기기에 저장된 게스트 토큰을 재사용하기 때문 정상 동작입니다. 회원으로 전환하려면 토큰을 전달하세요
⚠️ 토큰 오류는 예외로 전달되지 않습니다. 검증 실패 시 콜백이나 예외 없이 로그만 남고 게스트로 진행됩니다. 실제 서비스 배포 전에 회원 닉네임이 플레이어에 제대로 표시되는지 반드시 눈으로 확인하세요.
로그인이 필요한 순간 처리하기

게스트 참여가 허용되지 않은 방송에서 게스트가 채팅을 시도하면, 플레이어가 로그인 안내를 표시한 뒤 앱에 알려 줍니다.
이때 앱의 로그인 화면으로 보내고, 완료 후 플레이어를 다시 시작합니다.

Kotlin
SauceClient.setLivePlayerCallbackListener(object : LivePlayerCallbackListener {
    override fun onLoginRequest() {
        // 앱의 로그인 화면으로 이동
        // 로그인 완료 후 startLivePlayer() 를 다시 호출해 토큰을 전달합니다
    }

    // 아래 세 개는 각 기능 페이지에서 다룹니다 (인터페이스라 선언은 필요합니다)
    override fun onCouponDownload(couponCode: String) {}
    override fun onCouponCustom(couponData: String) {}
    override fun onCart(productId: String) {}
})
⚠️ 이 콜백이 올 때 플레이어는 이미 닫힙니다 — 로그인 안내를 사용자가 확인하면 플레이어 화면이 종료되고 콜백이 전달됩니다. 따라서 로그인 완료 후에는 플레이어를 새로 시작해야 합니다. 화면이 남아 있다고 가정한 코드를 쓰지 마세요.


Did this page help you?
🏠 소스라이브 🎬 소스클립 🔗 소스링크 📢 소스애드
🧩 API 가이드
🆕 최근 업데이트
💬 도움이 더 필요하신가요?
메일로 문의 카카오톡 채널로 문의
담당자에게 문의하기

궁금한 점이나 불편했던 점을 남겨주시면 담당자가 확인 후 답변드릴게요.

가이드 챗봇 BETA
* AI를 활용해 답변해서 사실과 다를 수도 있어요. 더 궁금한 사항은 '담당자에게 문의하기'를 이용해주세요.
💡 궁금한 솔루션(예: 라이브, 링크 등)을 함께 적어주시면 더 정확한 답변을 받을 수 있어요.