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

検証とトラブルシューティング

連携後は、パッケージインストール、access token provider、ブラウザSDK、camera権限、MonitorDog runtime APIの順に確認します。

クイックチェックリスト

  • npm install @monitordog/detector後、ブラウザアプリのbuildが成功します。
  • 顧客サーバーaccess token endpointがPOST /v1/sdk/sessionsを呼び出します。
  • access tokenリクエストbodyは{"email":"user@example.com"}形式です。
  • partner API keyはサーバー環境変数またはsecret managerにのみ存在します。
  • SDK tokenレスポンスのexpires_in1800です。
  • MonitorDogDetector.init()直後にはサーバー呼び出しがありません。
  • detector.login({ email })時点でsessionTokenProvider({ email })が呼び出されます。
  • detector.start()時点でmodel loadとcamera権限リクエストが開始されます。
  • HTTPSまたはlocalhostでページを開き、カメラ権限を許可しました。
  • 検知を停止する時点でdetector.stop()後にdetector.logout()を呼ぶか、detector.dispose()を呼び出します。

SDK runtime API一覧

SDK tokenでアクセスできるruntime APIは次に限定されています。

呼び出し元MethodPath目的
顧客サーバーaccess token endpointPOST/v1/sdk/sessionsemailでSDK access tokenを発行
ブラウザSDKGET/v1/auth/sdk-model暗号化されたdetector modelのdownload情報を取得
ブラウザSDKGET/v1/account/me現在のSDKユーザーを確認
ブラウザSDKGET/v1/account/{uuid}/lock_policyユーザーの検知ポリシーを確認
ブラウザSDKPOST/v1/eventlogin、logout、検知イベントを記録
ブラウザSDKPOST/v1/file/imageイベント画像をアップロード

外部SDK flowではrefresh token、cookie refresh、password login、MFA認証を使用しません。次のendpointは通常のWeb/Agent認証flow用であり、SDKブラウザ連携では呼び出しません。

  • /v1/auth
  • /v1/auth/v2
  • /v1/auth/cookie
  • /v1/auth/mfa

Access token providerエラー

401または403

partner API keyが未設定または不正な場合が多いです。

確認項目:

  • サーバー環境変数MONITORDOG_PARTNER_API_KEYが設定されています。
  • MonitorDog APIリクエストにAuthorization: Bearer <partner API key>が含まれています。
  • ブラウザがpartner API keyを直接送信していません。

validation error

現在の/v1/sdk/sessions bodyはemail-only契約です。

{
"email": "user@example.com"
}

account_uuidexternal_user_idexternal_session_idscopesを送信するとvalidation errorになります。

ブラウザSDKエラー

MonitorDog sessionTokenProvider is required for SDK login.

MonitorDogDetector.init() optionsにsessionTokenProviderがありません。

const detector = await MonitorDogDetector.init({
apiBaseUrl: "https://api.monitor.dog/v1",
sessionTokenProvider: async ({ email }) => {
const response = await fetch("/api/monitordog/access-token", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ email }),
});

return response.json();
},
onDetect: () => undefined,
});

init後にaccess token providerが呼ばれない

正常な動作です。init()はdetector作成であり、サーバー呼び出しではありません。access token providerはdetector.login({ email })で呼ばれます。

tokenが30分後に期限切れになる

正常な動作です。SDK tokenはexpires_in: 1800で発行されます。SDKは期限切れ前にsessionTokenProvider({ email })を再度呼び出します。access token providerが一時的に失敗しても、現在のtokenがまだ有効な間は既存tokenを使用します。

カメラエラー

権限リクエストが表示されない

  • ページがHTTPSまたはlocalhostで配信されているか確認します。
  • ブラウザsite settingでcamera権限がblockされていないか確認します。
  • detector.login({ email })後にdetector.start()まで呼び出されているか確認します。

camera permission denied

ユーザーが権限を拒否したか、ブラウザpolicyでblockされています。site settingでcamera権限を許可し、再度start()を呼び出してください。

Networkタブの確認順序

  1. detector.login({ email })
  2. 顧客endpoint /api/monitordog/access-token
  3. 顧客サーバーからMonitorDogへのPOST /v1/sdk/sessions
  4. ブラウザSDKからlogin activity POST /v1/event
  5. ブラウザSDKからGET /v1/account/me
  6. ブラウザSDKからGET /v1/account/{uuid}/lock_policy
  7. detector.start()
  8. ブラウザSDKからGET /v1/auth/sdk-model
  9. detection event発生時のPOST /v1/eventPOST /v1/file/image

partner API keyは3番のserver-to-server呼び出しにのみ存在する必要があります。