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サイトのログインユーザーと一致している必要があります。