Ajoutez l’authentification à votre application Flutter
Ce tutoriel vous montrera comment intégrer Logto dans votre application Flutter.
- Le package SDK est disponible sur pub.dev et le répertoire GitHub de Logto.
- Le projet d'exemple est construit en utilisant Flutter material. Vous pouvez le trouver sur pub.dev et notre répertoire GitHub.
- Le SDK est compatible uniquement avec les plateformes Android et iOS.
- Le SDK v1.x est compatible avec Dart 2.x. Pour le SDK v2.x, vous devez mettre à jour votre version de Dart à 3.x ou supérieure.
Prérequis
- Un compte Logto Cloud ou un Logto auto-hébergé.
- Une application native Logto créée.
- Un environnement de développement Flutter ou Dart.
Installation
- pub.dev
- GitHub
Vous pouvez installer le logto_dart_sdk package
directement en utilisant le gestionnaire de packages pub. Exécutez la commande suivante à la racine de votre projet :
flutter pub get logto_dart_sdk
Si vous préférez forker votre propre version du SDK, vous pouvez cloner le dépôt directement depuis GitHub.
git clone https://github.com/logto-io/dart
Modules
Le logto_dart_sdk
comprend deux modules principaux :
-
logto_core.dart Ce module de base fournit les fonctions et interfaces de base pour le SDK Logto.
-
logto_client.dart Ce module client offre une classe client Logto de haut niveau pour interagir avec le serveur Logto.
Dépendances et configurations
Ce SDK a les dépendances suivantes, certaines nécessitent des configurations supplémentaires :
flutter_secure_storage
Nous utilisons flutter_secure_storage pour implémenter le stockage sécurisé persistant de jetons multiplateforme.
- Keychain est utilisé pour iOS
- Le chiffrement AES est utilisé pour Android.
Configurer la version Android
Définissez android:minSdkVersion à 18 dans le fichier android/app/build.gradle de votre projet.
android {
...
defaultConfig {
...
minSdkVersion 18
...
}
}
Désactiver la sauvegarde automatique
Par défaut, Android peut sauvegarder automatiquement les données sur Google Drive. Cela peut provoquer l'exception java.security.InvalidKeyException:Failed to unwrap key
.
Pour éviter cela, vous pouvez désactiver la sauvegarde automatique pour votre application ou exclure sharedprefs
de FlutterSecureStorage
.
-
Pour désactiver la sauvegarde automatique, allez dans le fichier manifeste de votre application et définissez les attributs
android:allowBackup
etandroid:fullBackupContent
surfalse
.AndroidManifest.xml<manifest ... >
...
<application
android:allowBackup="false"
android:fullBackupContent="false"
...
>
...
</application>
</manifest> -
Exclure
sharedprefs
deFlutterSecureStorage
.Si vous devez conserver
android:fullBackupContent
pour votre application plutôt que de le désactiver, vous pouvez exclure le répertoiresharedprefs
de la sauvegarde. Voir plus de détails dans la documentation Android.Dans votre fichier AndroidManifest.xml, ajoutez l'attribut android:fullBackupContent à l'élément
<application>
, comme indiqué dans l'exemple suivant. Cet attribut pointe vers un fichier XML contenant des règles de sauvegarde.AndroidManifest.xml<application ...
android:fullBackupContent="@xml/backup_rules">
</application>Créez un fichier XML appelé
@xml/backup_rules
dans le répertoireres/xml/
. Dans ce fichier, ajoutez des règles avec les éléments<include>
et<exclude>
. L'exemple suivant sauvegarde toutes les préférences partagées sauf device.xml :@xml/backup_rules<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<exclude domain="sharedpref" path="FlutterSecureStorage"/>
</full-backup-content>
Veuillez consulter flutter_secure_storage pour plus de détails.
flutter_web_auth
flutter_web_auth est utilisé derrière le SDK flutter de Logto. Nous nous appuyons sur son interface d'interaction basée sur webview pour authentifier les utilisateurs.
Ce plugin utilise ASWebAuthenticationSession
sur iOS 12+ et macOS 10.15+, SFAuthenticationSession
sur iOS 11, Chrome Custom Tabs
sur Android et ouvre une nouvelle fenêtre sur le Web.
Enregistrer l'URL de rappel sur Android
Afin de capturer l'URL de rappel depuis la page de connexion de Logto, vous devrez enregistrer votre redirectUri de connexion dans votre fichier AndroidManifest.xml
.
<activity android:name="com.linusu.flutter_web_auth.CallbackActivity" android:exported="true">
<intent-filter android:label="flutter_web_auth">
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="io.logto"/>
</intent-filter>
</activity>
http.dart
Étant donné que le SDK doit effectuer des requêtes réseau, vous devrez passer un client HTTP au SDK. Vous pouvez utiliser le http.Client
par défaut de http.dart ou créer votre propre http.Client
avec des configurations personnalisées.
import 'package:http/http.dart' as http;