IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Utilisation de l'authentification biométrique [Android]


Sujet :

Composants FMX Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 365
    Points : 41 921
    Points
    41 921
    Billets dans le blog
    65
    Par défaut Utilisation de l'authentification biométrique
    Bonjour,

    je sors de mon "hibernation australe" (il n'y a pas de mot pour une mise en retrait printemps+été) pour enfin tester le composant Android TBiometricAuth (dispo à partir de D11.x, pour ceux qui ont installé la version community merci de me signaler s'il est présent)

    un programme simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    unit HelloAndroidU;
     
    interface
     
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      System.Permissions,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
      FMX.Controls.Presentation, FMX.StdCtrls, FMX.BiometricAuth;
     
    type
      TForm5 = class(TForm)
        Label1: TLabel;
        Button1: TButton;
        BiometricAuth1: TBiometricAuth;
        Label2: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure BiometricAuth1AuthenticateFail(Sender: TObject;
          const FailReason: TBiometricFailReason; const ResultMessage: string);
        procedure BiometricAuth1AuthenticateSuccess(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
        procedure BiometricPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray);
      public
        { Déclarations publiques }
      end;
     
    var
      Form5: TForm5;
      PermissionBiometric : TArray<String>;
     
    implementation
     
    {$R *.fmx}
     
    // USE_BIOMETRIC
     
     
    procedure TForm5.BiometricAuth1AuthenticateFail(Sender: TObject;
      const FailReason: TBiometricFailReason; const ResultMessage: string);
    begin
    Label2.Text:='Utilisateur non reconnu';
    end;
     
    procedure TForm5.BiometricAuth1AuthenticateSuccess(Sender: TObject);
    begin
    Label2.Text:='Salut moi';
    end;
     
    procedure TForm5.Button1Click(Sender: TObject);
    begin
      PermissionsService.RequestPermissions( { }
        PermissionBiometric,                 { }
        BiometricPermissionRequestResult    { }
     );
    end;
     
    procedure TForm5.FormCreate(Sender: TObject);
    begin
    PermissionBiometric := ['android.permission.USE_BIOMETRIC'];
    end;
     
    procedure TForm5.BiometricPermissionRequestResult(Sender: TObject; const APermissions: TClassicStringDynArray; const AGrantResults: TClassicPermissionStatusDynArray);
    begin
      if (Length(AGrantResults) = 1) and (AGrantResults[0] = TPermissionStatus.Granted) then
        BiometricAuth1.Authenticate;
    end;
     
    end.
    mais une execution déconcertante
    Nom : Capture.PNG
Affichages : 150
Taille : 48,0 Ko

    J'ai loupé une marche, pas encore réveillé , j'ai besoin de vos lumières sur cette erreur.

    pour info mon manifeste, basique j'ai juste ajouté (via les options de projets la permission pour utiliser la biométrie)
    <?xml version="1.0" encoding="utf-8"?>
    <!-- BEGIN_INCLUDE(manifest) -->
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.embarcadero.HelloAndroid"
    android:versionCode="1"
    android:versionName="1.0.0"
    android:installLocation="auto">
    <uses-sdk android:minSdkVersion="23" android:targetSdkVersion="34" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.USE_BIOMETRIC" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" />

    <uses-feature android:glEsVersion="0x00020000" android:required="true"/>
    <queries>

    </queries>
    <application
    android:persistent="False"
    android:restoreAnyVersion="False"
    android:label="HelloAndroid"
    android:debuggable="true"
    android:largeHeap="False"
    android:icon="@drawable/ic_launcher"
    android:theme="@style/AppTheme"
    android:hardwareAccelerated="true"
    android:resizeableActivity="true"
    android:requestLegacyExternalStorage="true">



    <!-- Trigger Google Play services to install the backported photo picker module. -->
    <service
    android:name="com.google.android.gms.metadata.ModuleDependencies"
    android:enabled="false"
    android:exported="false"
    tools:ignore="MissingClass">
    <intent-filter>
    <action android:name="com.google.android.gms.metadata.MODULE_DEPENDENCIES" />
    </intent-filter>

    <meta-data android:name="photopicker_activity:0:required" android:value="" />
    </service>

    <!-- Our activity is a subclass of the built-in NativeActivity framework class.
    This will take care of integrating with our NDK code. -->
    <activity
    android:name="com.embarcadero.firemonkey.FMXNativeActivity"
    android:exported="true"
    android:label="HelloAndroid"
    android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|uiMode"
    android:launchMode="singleTask">
    <!-- Tell NativeActivity the name of our .so -->
    <meta-data android:name="android.app.lib_name" android:value="HelloAndroid" />

    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>

    <receiver android:name="com.embarcadero.rtl.notifications.NotificationAlarm" />

    </application>
    </manifest>
    <!-- END_INCLUDE(manifest) -->
    Déjà que contrairement à mon ancien téléphone l'application n'apparait pas dans mes raccourcis, je me pose des questions ai-je "dormi" trop longtemps ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 365
    Points : 41 921
    Points
    41 921
    Billets dans le blog
    65
    Par défaut je me reveille
    À peine posée, j'ai résolu l'énigme.

    Il me manquait un truc dans les options de projets, plutôt qu'un long discours, l'image
    Nom : Capture.PNG
Affichages : 140
Taille : 10,7 Ko

    une ligne a été alors rajoutée au manifeste
    <activity android:name="com.embarcadero.firemonkey.biometricauth.BiometricFragmentActivity" android:excludeFromRecents="true" android:exported="false" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
    pour finaliser voici le dfm utilisé
    object Form5: TForm5
    Left = 0
    Top = 0
    Caption = 'Form5'
    ClientHeight = 491
    ClientWidth = 415
    FormFactor.Width = 320
    FormFactor.Height = 480
    FormFactor.Devices = [Desktop]
    OnCreate = FormCreate
    DesignerMasterStyle = 3
    object Label1: TLabel
    Align = Top
    StyledSettings = [Family, Style, FontColor]
    Size.Width = 415.000000000000000000
    Size.Height = 33.000000000000000000
    Size.PlatformDefault = False
    TextSettings.Font.Size = 24.000000000000000000
    TextSettings.HorzAlign = Center
    Text = 'Hello me'
    TabOrder = 0
    end
    object Button1: TButton
    Anchors = [akLeft, akRight, akBottom]
    Position.X = 123.000000000000000000
    Position.Y = 423.000000000000000000
    Size.Width = 169.000000000000000000
    Size.Height = 68.000000000000000000
    Size.PlatformDefault = False
    TabOrder = 1
    Text = 'S'#39'authentifier'
    TextSettings.Trimming = None
    OnClick = Button1Click
    end
    object Label2: TLabel
    Align = Top
    Position.Y = 33.000000000000000000
    Size.Width = 415.000000000000000000
    Size.Height = 23.000000000000000000
    Size.PlatformDefault = False
    Text = 'Attente d'#39'authentification'
    TabOrder = 3
    end
    object BiometricAuth1: TBiometricAuth
    AllowedAttempts = 3
    BiometricStrengths = [DeviceCredential, Weak]
    PromptCancelButtonText = 'Abandonner'
    PromptConfirmationRequired = True
    PromptTitle = 'Authentification '
    OnAuthenticateFail = BiometricAuth1AuthenticateFail
    OnAuthenticateSuccess = BiometricAuth1AuthenticateSuccess
    Left = 40
    Top = 56
    end
    end
    N.B. pour info BiometricStrengths = [DeviceCredential] semble être obligatoire

    Bien sûr, ce n'est qu'une ébauche de programme. Me voilà rassuré

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 365
    Points : 41 921
    Points
    41 921
    Billets dans le blog
    65
    Par défaut et pourquoi pas la reconnaissane faciale ?
    C'était la question au réveil. Comme mon appareil Android permet les deux, j'ai voulu satisfaire ma curiosité. Après configuration de mon téléphone, la bonne nouvelle : il n'y a rien à changer au programme
    Par contre, en critique, pas moyen de changer, apparement l'ordre de la demande c'est donc la partie reconnaissance faciale qui semble "prioritaire"
    Nom : Capture.PNG
Affichages : 96
Taille : 149,9 Ko
    ce n'est que si cette première ne fonctionne pas que la "demande" d'empreinte est affichée.

    Je ne vous raconte pas la galère pour obtenir l'image ci-dessus donc pour la demande d'empreinte c'est presque impossible pour moi de la capturer.
    Ce qui m'étonne c'est que j'ai pu voir une vidéo où le choix entre image et empreinte était dans le dialogue. Etait-ce du à l'appareil ou à la version d'Androïd c'est là une bonne question que je laisserai en suspens

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 05/10/2015, 19h28
  2. Réponses: 2
    Dernier message: 03/12/2012, 19h14
  3. Réponses: 6
    Dernier message: 01/10/2012, 18h22
  4. [Web Service] Utilisation de SoapClient, authentification par un certificat
    Par jezvin dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 21/07/2011, 12h01
  5. [Auth Windows]Utiliser une autre authentification que celle de l'utilisateur connecté
    Par anthyme dans le forum Windows Communication Foundation
    Réponses: 2
    Dernier message: 10/06/2008, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo