Så här integrerar du BankID i en React Native/Expo-app
Av Natalia Moskaleva den 22 januari 2026
3 min lästid

Behöver du integrera BankID i ditt React Native & Expo-projekt?
Iduras nyligen släppta SDK är här för att förenkla processen. Integrationen kan slutföras på nolltid och ger dina användare en smidig autentiseringsupplevelse.
I det här blogginlägget visar vi hur enkel integrationen är med Idura Verify genom att förbättra en mobilapplikation med en säker och enkel autentisering.
Processen består av tre steg:
- Skapa en ny applikation i Idura Dashboard.
- Installera SDK med npm och initiera det med våra applikationsdetaljer. Lägg till några rader kod för att rendera inloggningskomponenten för BankID och hämta JWT claims med användarinformation.
- När integrationen är klar kommer vi att kunna utföra testinloggningar direkt.
Genom att integrera BankID via Idura kan du automatiskt utnyttja app switching, vilket gör att användare kan växla mellan din app och BankID-appen för att autentisera sig, utan att behöva använda webbläsaren.
Vi har inkluderat en video i slutet för att demonstrera den sömlösa inloggningsresan som drivs av BankID och Idura.
Låt oss nu titta på varje integrationssteg i detalj.
Steg 1: Registrera en ny inloggningsapplikation
Låt oss först skapa en ny inloggningsapplikation på Idura Dashboard.
Vi väljer en domän och ett klient-ID för vår applikation. Genom attvälja Native -> Expo (React Native) som teknik kommer vi till den relevanta integrationsguiden.
När applikationen är registrerad behöver vi följande information från fliken General i våra applikationsinställningar:
- Klient-ID för att identifiera vår app till Idura Verify. Vi valde urn:cool-energy:expo:bankid.
- Domän som vi kommer att kommunicera med Idura Verify på.
Vi kommer att användacool-energy-test.idura.broker.
Ett sista steg är att lägga till en callback-URL för vår applikation. Det är till den här URL:en som Idura Verify kommer att omdirigera användaren vid lyckad autentisering. Det är också den destination där applikationen kommer att ta emot en JSON Web Token med användarinformation.
Vi utvecklar med Expo Go, så vi kommer att använda exp://127.0.0.1:8081/auth/callback som callback-URL.
Om du ställer in ett anpassat URL-schema kan din URL för återuppringning se ut ungefär så här: yourscheme://auth/callback.
Steg 2: Installera, initiera och använd SDK i din applikation
Låt oss gå till vår kodredigerare och installera Idura Verify Expo SDK med npm:
npm install --save @criipto/verify-expo
Sedan konfigurerar vi SDK genom att paketera vår applikation i CriiptoVerifyProvider. Vi använder domänen och klient-ID för applikationen som vi just konfigurerade:
// src/App.jsx
import { View} from 'react-native';
import LoginScreen from './LoginScreen.jsx';
import {CriiptoVerifyProvider, useCriiptoVerify} from '@criipto/verify-expo';
export default function App() {
return (
<CriiptoVerifyProvider
domain="cool-energy-test.idura.broker"
clientID="urn:cool-energy:expo:bankid"
>
<View>
<LoginScreen />
...
</View>
</CriiptoVerifyProvider>
);
}
Vi kan nu utnyttja den anpassade kroken useCriiptoVerify() för att hantera autentiseringsflödet. Här är ett förenklat exempel på en funktion som vi kan använda:
// src/LoginScreen.jsx
export default function LoginScreen() {
const { login, claims, error } = useCriiptoVerify();
const handlePress = async () => {
try {
const acrValues = 'urn:grn:authn:se:bankid:same-device';
const redirectUri = 'exp://127.0.0.1:8081/auth/callback';
const result = await login(acrValues, redirectUri);
console.log(result);
} catch (error) {
console.error('Authentication Error:', error);
}
};
...
}
Vi använde inloggningsmetoden för att initiera autentiseringsprocessen och skickade de två nödvändiga argumenten:
acrValues för att ange den e-legitimation vi vill använda
redirectUri för URL:en för återuppringning
Slutligen lägger vi till ett UI-element som kommer att använda den funktion vi just skapade, så att våra användare kan logga in i vår app med BankID. Vi kommer också att rendera JWT-anspråk och hantera potentiella autentiseringsfel:
export default function LoginScreen() {
const { login, claims, error } = useCriiptoVerify();
const handlePress = async () => {
try {
const redirectUri = 'exp://127.0.0.1:8081/auth/callback';
const acrValues = 'urn:grn:authn:se:bankid:same-device';
const result = await login(acrValues, redirectUri);
} catch (error) {
console.error('Authentication Error:', error);
}
};
return (
<>
<Pressable onPress={handlePress}>
<Image source={BankIdLogo} />
<Text>Login with BankID</Text>
</Pressable>
{error ? <Text>An error occurred: {error.toString()}</Text> : null}
{claims ? (
<View>
<Text> Name: {claims.name}</Text>
<Text> SSN: {claims.ssn}</Text>
<Text> Country: {claims.country}</Text>
</View>
) : null}
</>
);
}
Med den här minimala installationen kan vi redan nu försöka logga in med BankID. (Vi behöver bara en testversion av BankID-appen och en testanvändare).
Steg 3: Upplev autentiseringsflödet med testinloggningar
Vill du se inloggningsupplevelsen i vår Expo-applikation i aktion? Ta en titt på videon nedan.
Om du vill prova själv kan du ladda ner en exempelapp från GitHub.
Drivs din applikation av React Native och Expo?
Vi skulle gärna hjälpa dig att förbättra den med en säker och smidig autentiseringsupplevelse. Du kan använda BankID eller något annat eID som vi stödjer.
Låt oss arbeta tillsammans för att göra din app ännu bättre!
Criipto är nu Idura!
Du kanske stöter på criipto i våra domännamn och kodprover. Detta är förväntat eftersom vi bytte namn i November 2025.
Dessa relaterade artiklar

Hur man använder Fiddler för att felsöka autentiseringsflöden

Förstå JWT-validering: En praktisk guide med kodexempel

Vad är Passkeys? En introduktion för nybörjare
Sign up for our newsletter
Stay up to date on industry news and insights