メインコンテンツまでスキップ

login()

login()は、MonitorDog SDKのユーザーsessionを準備する関数です。

init()がSDK設定を登録する段階だとすると、login()は実際のユーザーemailを基準にSDK access tokenを発行し、login eventとアカウント/ポリシーAPIだけを処理します。モデルロード、カメラ権限リクエスト、Webカメラ検知の実行はstart()が担当します。

役割

login()が呼び出されると、SDKは内部的に次の処理を順番に実行します。

sessionTokenProvider({ email })を呼び出し
-> SDK access tokenを保存
-> login activity eventを送信
-> アカウント情報を確認
-> 検知ポリシーを確認

したがって、顧客Webサイトでユーザーがログインに成功した後に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({
// 顧客Webサイトへのログイン時に入力したメールアドレス
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()を別途呼び出す必要があります。
  • ユーザーlogout時には、実行中であれば先にstop()を呼び出してからlogout()を呼び出してください。
  • login()に渡すemailは、顧客Webサイトのログインユーザーと一致している必要があります。