Zoom App → Backend → Microsoft OAuth → Access Token → Microsoft Graph → Zoom UI
- App Type: Zoom App (User-managed)
- Enabled Features:
- ✅ In-Client OAuth
- Home URL:
- Domain Allow List:
- your-ngrok-domain (without https)
- OAuth Redirect URL:
- Surfaces Enabled:
- ✅ Meetings
- SDK Used:
zoomSdk.openUrl()for external auth flow
- Created App: Coda Outlook / Word Integration
- Supported Accounts:
- Any Microsoft account (multi-tenant)
- openid
- profile
- offline_access
- Mail.Read
- Files.Read
👉 Important:
- Click Grant Admin Consent
- Express.js
- MSAL (Microsoft Authentication Library)
- OAuth Authorization Code Flow
- Token exchange & storage
- In-memory token store (Map)
- Microsoft Graph API calls
/auth/outlook/start/auth/outlook/callback/auth/outlook/status
/emails/latest
/word/docs/word/latest-metadata
- Tokens stored on backend only
- No exposure to frontend
- Uses
linkIdfor session mapping
- User opens Zoom App
- Clicks Connect MS Account
- Zoom SDK opens external browser
- User logs into Microsoft
- Backend receives token
- Zoom UI polls connection status
- Data becomes available in UI
- Zoom app runs in webview
- External login happens in browser
- Session handled using
linkId(not cookies)
- Fetch last 3 emails
- Show:
- Subject
- Sender
- Timestamp
- Preview
- Fetch last 3 Word documents
- Show metadata of latest document
- File name
- Size
- Created date
- Last modified date
- File path
- MIME type
Zoom → Backend → Microsoft Graph
-
Start backend: node server.js
-
Start ngrok: ngrok http 3000
-
Open Zoom App
-
Click Connect MS Account
-
Login via Microsoft
-
Click:
- Show Emails
- Show Word Documents
This project demonstrates:
- Zoom + Microsoft OAuth integration
- Secure backend token handling
- Microsoft Graph API usage
- Cross-platform integration
