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은 고객사 로그인 사용자와 일치해야 합니다.