Skip to content

πŸ“± Mobile App Integration Track ​

The fastest path to integrating logi in iOS, Android, Flutter, and React Native native apps.

Is this the right track?

The four core promises ​

  1. Public client + PKCE are required. Never hardcode client_secret into a mobile app.
  2. Use a single custom-scheme redirect_uri β€” for example, com.example.app://oauth/1pass/callback.
  3. App-to-app first, in-app browser fallback β€” works even when the user arrives from an in-app browser like KakaoTalk or Naver.
  4. Keep the app RP and the web RP separate β€” don't mix mobile and web redirects under the same client_id. Details: Common / Public Clients Β· One RP per surface

Step 1 Β· Register the app ​

Register one RP with client_type: public. You can do this from the console or the API.

Step 2 Β· Platform quickstart ​

On iOS, the official Swift SDK LogiAuth handles PKCE, ASWebAuthenticationSession, the in-app escape, and keychain storage for you. Reach for the SDK before you roll your own.

swift
// Package.swift
.package(url: "https://github.com/dcode-co/logi-auth-swift.git", from: "0.2.0"),

// App.swift
import LogiAuth

@main
struct MyApp: App {
  init() {
    LogiAuth.configure(LogiAuthConfig(
      clientId: "logi_xxx",
      redirectURI: URL(string: "myapp://oauth/1pass/callback")!
    ))
  }

  var body: some Scene {
    WindowGroup {
      ContentView()
        .onOpenURL { url in _ = LogiAuth.handle(url) }
    }
  }
}

// anywhere
let result = try await LogiAuth.signIn()

Don't forget .onOpenURL { url in _ = LogiAuth.handle(url) } β€” the SDK receives the login callback there and completes the token exchange.

For full integration and error classification β†’ Swift quickstart

Other platforms ​

Follow the single page for your stack. The rest are mirrors of the same pattern.

StackGuideSDK / library
iOS (Swift)integrations/swiftLogiAuth 0.1.2 (recommended) Β· or roll your own ASWebAuthenticationSession + CryptoKit
Android (Kotlin)integrations/androidLogiAuth Kotlin SDK (recommended) Β· or hand-rolled Custom Tabs + DataStore + Keystore
Flutterintegrations/flutterflutter_web_auth_2 + flutter_secure_storage
React Nativeintegrations/react-nativereact-native-app-auth + react-native-keychain

Storing credentials separately on Android

The Android (Kotlin) β€” Canonical/Merge page covers canonical_sub / linked_subs handling and the pattern for storing credentials separately. For a new integration, read it after you finish the Step 2 guide.

Step 3 Β· Avoid the mobile-specific pitfalls ​

Step 4 Β· Pre-build checks ​

Common reference (track-agnostic) ​


Hand the whole thing to an AI ​

Paste @/llms-full.txt into Claude Code, Cursor, or Codex, then say:

"Integrate logi 1pass as an RP into my [iOS Swift / Flutter / Android Kotlin / RN] app, using a public client + PKCE."

β†’ It generates the quickstart, env, redirect_uri registration, and callback handler automatically.

Identityκ°€ μ œν’ˆμ˜ μ‹ λ’°λ₯Ό λ§Œλ“­λ‹ˆλ‹€.