Intégration native
Flutter et mobile
Ouvrez la connexion dans le navigateur système via AppAuth. N’utilisez pas de WebView embarquée. AppAuth applique le flux système et gère le verifier PKCE pour les clients natifs.
Exemple avec flutter_appauth
import 'package:flutter_appauth/flutter_appauth.dart';
final appAuth = FlutterAppAuth();
final result = await appAuth.authorizeAndExchangeCode(
AuthorizationTokenRequest(
clientId,
redirectUrl,
issuer: 'https://www.orcraft.net',
scopes: ['openid', 'profile', 'email'],
nonce: secureRandomNonce,
),
);
final idToken = result.idToken; // Valider le JWT, puis lire son claim subEn pratique, validez l’ID token puis lisez son claim sub pour obtenir l’identifiant Orcraft. Ne faites pas confiance à un JWT simplement décodé.
Déclarer le retour mobile
- Préférez un Universal Link iOS / Android App Link HTTPS vérifié et enregistrez l’URL exacte chez l’admin.
- Configurez l’association du domaine à l’app (
apple-app-site-associationetassetlinks.json). - Si l’app n’est pas installée, laissez le même lien ouvrir la page de retour web.
- Un client mobile est public : ne mettez jamais de client secret dans le binaire. Les applications navigateur sont publiques aussi et doivent garder le verifier PKCE en mémoire courte, sans secret embarqué.
Paiement mobile
Appelez l’API Orcraft depuis votre backend lorsqu’un backend existe. Le flux ouvre ensuite l’URL de Stripe Checkout dans le navigateur système. Au retour par App Link, ne débloquez aucun droit depuis le paramètre d’URL : relisez l’état par billing:read ou attendez le webhook serveur.
Référence SDK : flutter_appauth sur pub.dev.