During identity verification (KYC), end-users must capture images of their National ID or passport and complete a 3D passive facial liveness check. This requires real-time access to the device's front-facing camera via browser WebRTC APIs.
If your users encounter a "Camera Access Denied" or "Hardware Permission Required" error, this guide explains why mobile browsers and embedded in-app webviews block camera access and how to resolve it instantly.
1. How Camera Permissions Work Under the Hood
When a verification session loads in a mobile browser (Safari on iOS or Chrome on Android), the browser triggers a secure hardware permission prompt:
TEXT
VERIFICATION SESSION LOADED (HTTPS://)
│
▼
BROWSER REQUESTS MEDIA DEVICES (WebRTC getUserMedia)
│
┌─────────────────────────┴─────────────────────────┐
▼ ▼
[STANDARD MOBILE BROWSER] [IN-APP WEBVIEW (Instagram / FB / TikTok)]
- Safari / Chrome prompts user for permission. - In-app browser sandboxes hardware.
- User taps "Allow" -> Camera active. - Camera permission permanently blocked.
- User taps "Don't Allow" -> Blocked (403). - RESULT: CAMERA ACCESS DENIED ERROR.2. The 3 Common Causes of Camera Permission Blocks
Cause A: Opening Verification Inside In-App Social Webviews (Most Common)
- The Problem: Many users open verification links directly from social media apps, messaging apps (like WhatsApp or Telegram), or marketing emails viewed inside embedded in-app browsers. In-app webviews severely restrict device hardware permissions for security reasons.
- The Resolution: Instruct the user (or prompt automatically via your UI) to tap the menu icon (
...or share icon) in the top corner of their screen and select "Open in Safari" or "Open in Chrome".
Cause B: Missing HTTPS Secure Context
- The Problem: Modern mobile browsers (iOS Safari and Android Chrome) strictly block WebRTC camera access over unencrypted HTTP connections. Camera hardware can only be initialized inside a secure HTTPS context.
- The Resolution: Ensure all hosted verification sessions and redirect URLs use HTTPS. Nyota’s official hosted flow (
verify.nyotaimara.com) enforces HTTPS by default.
Cause C: Browser Permission Denied Cache
- The Problem: The user previously clicked "Don't Allow" when the browser requested camera access. The browser remembers this refusal and silently blocks future prompts.
- The Resolution: Guide the user to reset their browser permissions:
- iOS Safari: Tap the
aAicon in the address bar→→
Website Settings→→Set Camera to Ask or Allow. - Android Chrome: Tap the lock icon in the address bar
→→Permissions→→
Camera→→Allow access.
- iOS Safari: Tap the
3. Step-by-Step Recovery Path for Users
If an end-user is stuck on the camera permission screen:
- Step 1: Tap the browser menu (three dots or share icon).
- Step 2: Select "Open in External Browser" (Safari or Chrome).
- Step 3: When the browser asks "verify.nyotaimara.com would like to access your camera", tap "Allow".
- Step 4: Position your face within the on-screen oval to complete the 3D liveness scan.