સામગ્રી પર જાઓ
ડૉક્સ · iOS અને Android

iOS અને Android

નેટિવ ઍપ લોકોને સિસ્ટમ બ્રાઉઝરમાં, ક્યારેય વેબ વ્યૂમાં નહીં, તેમના એન્વાયર્નમેન્ટની લૉબી મારફતે સાઇન ઇન કરાવે છે: લોકો પોતાની પાસકી, સાચવેલા પાસવર્ડ અને Usher સેશન વાપરે છે, અને ઍપ ક્યારેય પાસવર્ડ જોતી નથી. બાકીનું OpenID Connect SDK તમારા માટે કરે છે, અને ટોકન ડિવાઇસ પર જ રાખે છે.

ઍપ રજિસ્ટર કરો

Usher Console માં, એન્વાયર્નમેન્ટ ખોલો, પછી ઍપ્લિકેશન → નવી ઍપ્લિકેશન → મોબાઇલ અથવા ડેસ્કટૉપ. તેને તમારી માલિકીના ડોમેનમાંથી બનેલું પ્રાઇવેટ-યુઝ રીડાયરેક્ટ આપો, જેમ કે com.example.notes:/oauth/callback. તેને ક્લાયન્ટ ID મળે છે અને કોઈ સીક્રેટ નહીં: ફોન પરની ઍપ સીક્રેટ સાચવી શકતી નથી, તેથી તે તેના બદલે PKCE વાપરે છે. Console બંને પ્લેટફોર્મ માટેનું સેટઅપ બતાવે છે.

iOS અને macOS

swift
import UsherKit

let usher = UsherClient(configuration: .init(
    issuer: URL(string: "https://login.example.com")!,
    clientID: "…",
    redirectURI: URL(string: "com.example.notes:/oauth/callback")!))

let session = try await usher.signIn()
var request = URLRequest(url: URL(string: "https://api.example.com/notes")!)
try await usher.authorize(&request)

ટોકન Keychain માં, ફક્ત આ ડિવાઇસ પર જ રખાય છે.

Android

kotlin
// build.gradle.kts: manifestPlaceholders["usherRedirectScheme"] = "com.example.notes"
val usher = Usher.client(context, UsherConfiguration(
    issuer = "https://login.example.com",
    clientId = "…",
    redirectUri = "com.example.notes:/oauth/callback"))

val session = usher.signIn(Usher.customTabs(activity))

સાઇન-ઇન Custom Tab માં ખૂલે છે. સેશન Android Keystore માંની કી વડે એન્ક્રિપ્ટ થાય છે.

SDK શું તપાસે છે

  • દરેક સાઇન-ઇન પર PKCE, state અને nonce, અને જવાબમાં જણાવેલો ઇશ્યુઅર (RFC 9207).
  • તમારા એન્વાયર્નમેન્ટની કી સામે ID ટોકનની સિગ્નેચર, અને તેનો ઇશ્યુઅર, ઑડિયન્સ અને સમાપ્તિ.
  • રિફ્રેશ ટોકન રોટેટ થાય છે: દરેક એક જ વાર વપરાય છે. સાઇન આઉટ કરવાથી તે Usher પર રદ થાય છે.
  • DPoP, જો તમે ચાલુ કરો તો: ડિવાઇસ પરની કી સાથે બંધાયેલાં ટોકન, બીજે કૉપિ થાય તો નકામાં.

ઍક્સેસ ટોકન વડે તમારા પોતાના API ને કૉલ કરવા માટે, API ને નામ આપો અને resources વડે તેને માંગો: જુઓ તમારા પોતાના API.