idp-auth-mobile

Implements OAuth 2.1 Authorization Code with PKCE login for mobile apps against the Overlens IDP.

Updated Jul 24, 2026
One-click install
npx skills add https://github.com/overlens/claude-marketplace --skill idp-auth-mobile-overlens
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: idp-auth-mobile
Source: https://github.com/overlens/claude-marketplace/tree/main/plugins/idp-integration/skills/idp-auth-mobile
Command: npx skills add https://github.com/overlens/claude-marketplace --skill idp-auth-mobile-overlens

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires expo-web-browser, expo-crypto, expo-secure-store, expo-linking, and includes references (resource) components.

What problem does it solve? Mobile apps and backend-less SPAs cannot safely store a client_secret, so standard OAuth web flows do not apply. This Skill guides developers through the public-client PKCE flow against the Overlens IDP, covering deep-link callbacks, secret-less token exchange, refresh rotation, secure token storage, and logout. ## Core Features & Use Cases - Per-platform implementation guides: Step-by-step references for Expo, bare React Native, native iOS (Swift), native Android (Kotlin), and Flutter, each with the correct system auth browser and secure storage approach. - Copy-paste Expo template: A complete auth.ts implementing PKCE generation, auth session, token exchange, lazy refresh, and logout via the IDP end_session_endpoint. - Troubleshooting reference: Symptom-to-cause-to-fix mapping for common mobile OAuth failures like deep-link mismatches, rotated refresh token errors, and WebView pitfalls. - Use Case: A developer building a React Native app needs users to log in with their Overlens account. The Skill provides the exact authorize URL, token exchange contract (no client_secret), Keychain/Keystore storage guidance, and logout flow. ## Quick Start Ask the assistant to integrate Overlens login into your Expo or React Native app using PKCE and a deep-link callback.

Frequently Asked Questions about idp-auth-mobile

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I add Overlens login to a React Native or Expo app?

Register a public OAuth client with your deep link in redirectUris, then generate a PKCE verifier and challenge, open the system auth browser to accounts.overlens.com.br/login, capture the deep-link callback, and exchange the code at the IDP token endpoint with no client_secret. The Skill includes a complete Expo auth.ts template.

What is the difference between a public client and a confidential client in OAuth?

A public client runs entirely on a user device and cannot keep a client_secret, so it authenticates via PKCE S256 only. A confidential client has a server backend that holds the secret and performs the token exchange with Basic auth; for that case use the web OAuth integration instead.

Can I use a WebView for the OAuth login screen on mobile?

No. Embedded WebViews cannot share the system cookie jar, forcing re-login every time, and Google blocks sign-in inside them with disallowed_useragent. Use ASWebAuthenticationSession on iOS, Chrome Custom Tabs on Android, or expo-web-browser.

Why does my refresh token request return 401 after the first refresh?

The Overlens IDP rotates the refresh token on every call, so the previous token dies immediately. You must overwrite the stored refresh token with the new value from each response and never retry with the old one.

Why does the deep link not reopen my app after login?

The custom URL scheme must be registered in the OS, not just in the IDP: Expo scheme in app.json, CFBundleURLSchemes in iOS Info.plist, or an intent-filter in AndroidManifest.xml. Rebuild the native app after changing it, and test on a dev client or standalone build rather than Expo Go.

How do I log out a user from the Overlens IDP on mobile?

Delete both tokens from secure storage, then open the IDP end_session_endpoint (GET /auth/logout) in the same system browser session used for login so SSO cookies are cleared. The post_logout_redirect_uri deep link must be registered on the client by an admin first.