検証とトラブルシューティング
連携後は、パッケージインストール、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_inは1800です。 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は次に限定されています。
| 呼び出し元 | Method | Path | 目的 |
|---|---|---|---|
| 顧客サーバーaccess token endpoint | POST | /v1/sdk/sessions | emailでSDK access tokenを発行 |
| ブラウザSDK | GET | /v1/auth/sdk-model | 暗号化されたdetector modelのdownload情報を取得 |
| ブラウザSDK | GET | /v1/account/me | 現在のSDKユーザーを確認 |
| ブラウザSDK | GET | /v1/account/{uuid}/lock_policy | ユーザーの検知ポリシーを確認 |
| ブラウザSDK | POST | /v1/event | login、logout、検知イベントを記録 |
| ブラウザSDK | POST | /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_uuid、external_user_id、external_session_id、scopesを送信すると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タブの確認順序
detector.login({ email })- 顧客endpoint
/api/monitordog/access-token - 顧客サーバーからMonitorDogへの
POST /v1/sdk/sessions - ブラウザSDKからlogin activity
POST /v1/event - ブラウザSDKから
GET /v1/account/me - ブラウザSDKから
GET /v1/account/{uuid}/lock_policy detector.start()- ブラウザSDKから
GET /v1/auth/sdk-model - detection event発生時の
POST /v1/eventとPOST /v1/file/image
partner API keyは3番のserver-to-server呼び出しにのみ存在する必要があります。