본문으로 건너뛰기

login()

login()은 MonitorDog SDK 사용자 세션을 준비하는 함수입니다.

init()이 SDK 설정을 등록하는 단계라면, login()은 실제 사용자 email을 기준으로 SDK access token을 발급받고, login event와 계정/정책 API만 처리합니다. 모델 로드, 카메라 권한 요청, 웹캠 탐지 실행은 start()가 담당합니다.

역할

login()이 호출되면 SDK는 내부적으로 다음 작업을 순서대로 수행합니다.

sessionTokenProvider({ email }) 호출
-> SDK access token 저장
-> login activity event 전송
-> 계정 정보 확인
-> 감지 정책 확인

따라서 고객사 웹사이트에서 사용자가 로그인에 성공한 뒤 login()을 호출하면, SDK session이 준비됩니다. 실제 detection 실행은 이어서 start()를 호출해야 합니다.

Access token provider 구현

sessionTokenProvider는 SDK가 호출하는 access token provider입니다. 문서 예시에서는 이 함수를 getMonitorDogAccessToken({ email })로 정의합니다.

async function getMonitorDogAccessToken({ email }: { email: string }) {
const response = await fetch("/api/monitordog/access-token", {
method: "POST",
headers: { "content-type": "application/json" },
credentials: "include",
body: JSON.stringify({ email }),
});

if (!response.ok) {
throw new Error("Failed to issue MonitorDog access token");
}

return response.json();
}

const detector = await MonitorDogDetector.init({
apiBaseUrl: "https://api.monitor.dog/v1",
sessionTokenProvider: getMonitorDogAccessToken,
onDetect: handleMonitorDogDetection,
});

/api/monitordog/access-token은 고객 서버 endpoint 예시입니다. 이 endpoint는 서버 환경변수나 secret manager에 보관된 MonitorDog partner API key로 MonitorDog POST /v1/sdk/sessions를 호출합니다.

export async function POST(request: Request) {
const { email } = await request.json();

const response = await fetch("https://api.monitor.dog/v1/sdk/sessions", {
method: "POST",
headers: {
"content-type": "application/json",
authorization: `Bearer ${process.env.MONITORDOG_PARTNER_API_KEY}`,
},
body: JSON.stringify({ email }),
});

return new Response(await response.text(), {
status: response.status,
headers: { "content-type": "application/json" },
});
}

기술적으로 브라우저 JavaScript에서 MonitorDog POST /v1/sdk/sessions를 직접 호출할 수는 있지만, partner API key가 노출되므로 운영 또는 고객 환경에서는 금지합니다. 직접 호출은 폐기 가능한 key를 쓰는 내부 로컬 테스트로만 제한하세요.

파라미터

await detector.login({
// 고객사 웹사이트에서 로그인할 때 입력한 이메일
email: currentUser.email,
});
  • email (필수): MonitorDog에 등록된 사용자 email입니다.

이 email은 init()에서 등록한 sessionTokenProvider로 전달됩니다.

sessionTokenProvider({ email });

고객 서버 access token endpoint는 이 email과 partner API key를 사용해 MonitorDog /v1/sdk/sessions API에서 SDK access token을 발급받습니다.

반환값

반환값 예시는 다음과 같습니다.

{
"token_type": "bearer",
"access_token": "...",
"expires_in": 1800,
"expires_at": "2026-06-30T00:30:00+00:00"
}

일반적으로 고객사 application code에서 이 token을 직접 저장하거나 사용할 필요는 없습니다. SDK가 내부적으로 token을 저장하고, 이후 MonitorDog runtime API 호출에 사용하며 만료 전 자동 갱신합니다.

실패 처리

login()은 다음 상황에서 실패할 수 있습니다.

  • sessionTokenProvider가 SDK token 발급에 실패한 경우
  • 전달한 email이 MonitorDog에 등록되어 있지 않은 경우
  • 고객 서버 access token endpoint가 MonitorDog /v1/sdk/sessions 호출에 실패한 경우
  • 계정 정보 또는 감지 정책 조회가 실패한 경우

주의사항

  • login()init() 이후에 호출해야 합니다.
  • login() 성공만으로 detector가 실행되지는 않습니다.
  • detection 실행은 await detector.start()를 별도로 호출해야 합니다.
  • 사용자 로그아웃 시에는 실행 중이면 stop()을 먼저 호출한 뒤 logout()을 호출해야 합니다.
  • login()에 전달하는 email은 고객사 로그인 사용자와 일치해야 합니다.