Effectuer une vérification par SMS sur un serveur

Pour valider automatiquement les numéros de téléphone, vous devez implémenter à la fois les les parties serveur du flux de validation. Ce document explique comment mettre en œuvre la partie serveur.

Le serveur de vérification du numéro de téléphone effectue trois tâches:

  1. Élaborez un message de validation incluant un code à usage unique Format attendu par l'API SMS Retriever côté client
  2. Envoi du message de validation sur l'appareil de l'utilisateur...
  3. Vérifier le code à usage unique lorsqu'il est renvoyé au serveur et terminer les tâches de post-validation requises par votre backend

C'est à vous de décider comment votre application interagit avec le serveur. Une approche consiste à exposer une API REST avec deux points de terminaison: un qui reçoit les requêtes pour vérifier un numéro de téléphone donné et envoie les SMS de vérification et un deuxième point de terminaison qui reçoit des codes à usage unique de votre application.

1. Rédiger un message de validation

Lorsque votre serveur reçoit une demande de validation d'un numéro de téléphone, commencez par créer le message de vérification que vous enverrez à l'appareil de l'utilisateur. Ce message doit:

Sinon, vous pouvez choisir le contenu du message de validation. Il est utile de créer un message à partir duquel vous pouvez facilement extraire le code du code plus tard. Par exemple, un message de vérification valide peut ressembler à ceci : suivantes:

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

Générer un code à usage unique

Vous pouvez implémenter des codes à usage unique de différentes manières, à condition qu'ils soient impossibles à deviner, et vous pouvez associer les codes à un utilisateur ou à un numéro de téléphone lorsque le client l'application les renvoie à votre serveur. Vous devez faciliter la saisie des codes, prendre en charge toutes les situations qui pourraient obliger les utilisateurs à saisir manuellement le code.

Une façon d'implémenter des codes à usage unique consiste à générer des nombres aléatoires, que vous utilisez en tant que clés dans un tableau de base de données. Par exemple, vous pouvez avoir une propriété tableau comme celui-ci:

ID Utilisateur Expiration
123456789... 1234 14/03/2017 1:59

Vous pouvez utiliser l'ID encodé en base32 comme code unique.

Calcul de la chaîne de hachage de votre application

Les services Google Play utilisent la chaîne de hachage pour déterminer quelle validation messages à envoyer à votre application. La chaîne de hachage correspond au nom du package de votre application. et le certificat de clé publique de votre application. Pour générer la chaîne de hachage:

  1. Si vous utilisez la signature d'application Google Play : téléchargez votre certificat de signature d'application (deployment_cert.der) à partir du section Signature d'application de la Google Play Console.

    Ensuite, importez le certificat de signature d'application dans un magasin de clés temporaire:

    keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
    

    Si vous signez directement vos APK, ignorez cette étape.

  2. Obtenez votre certificat de signature d'application, celui que vous avez importé ci-dessus ou celle que vous utilisez pour signer directement vos APK, sous la forme d'une chaîne hexadécimale minuscule.

    Par exemple, pour obtenir la chaîne hexadécimale du keystore temporaire créé ci-dessus, saisissez la commande suivante:

    keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
    

    Si vous signez directement vos APK, spécifiez votre keystore de production et l'alias de certificat.

  3. Si vous avez créé un keystore temporaire, supprimez-le.

  4. Ajoutez la chaîne hexadécimale au nom du package de votre application, en la séparant par une espace.

  5. Calcule la somme SHA-256 de la chaîne combinée. Veillez à supprimer Espace de début ou de fin de la chaîne avant le calcul du SHA-256 .

  6. Encodez en base64 la valeur binaire de la somme SHA-256. Vous devrez peut-être décoder la somme SHA-256 de son format de sortie en premier.

  7. La chaîne de hachage de votre application correspond aux 11 premiers caractères de la chaîne le hachage.

La commande suivante calcule la chaîne de hachage à partir de l'environnement de production keystore:

keytool -exportcert -alias PlayDeploymentCert -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11

Vous pouvez également obtenir la chaîne de hachage de votre application avec AppSignatureHelper. à partir de l'application exemple SMS Retriever. Cependant, si vous utilisez la classe utilitaire, veillez à la supprimer de votre application après avoir obtenu la chaîne de hachage. Ne pas utiliser chaînes de hachage calculées de manière dynamique sur le client dans vos messages de validation.

2. Envoyer le message de validation par SMS

Une fois le message de vérification construit, envoyez-le au de votre téléphone via n'importe quel système SMS.

Par exemple, consultez la section Validation des applications à l'aide de SMS Twilio sur le site pour les développeurs de Twilio.

Lorsque l'appareil de l'utilisateur reçoit ce message, il est dirigé vers votre l'application. Votre application extrait le code à usage unique et le renvoie à votre serveur terminer la procédure de validation.

3. Vérifier le code à usage unique lorsqu'il est renvoyé

Un serveur de validation du numéro de téléphone dispose généralement d’un deuxième point de terminaison qu’il utilise pour recevoir des codes à usage unique de la part des applications clientes. Lorsque votre serveur reçoit un message à ce point de terminaison, procédez comme suit:

  1. Vérifiez que le code à usage unique est valide et qu'il n'a pas expiré.
  2. Notez que l'utilisateur associé au code à usage unique a finalisé le numéro de téléphone. la validation.
  3. Supprimez l'enregistrement de base de données du code à usage unique ou assurez-vous que le même code ne peut pas être réutilisé.

Lorsque vous enregistrez l'état de validation de l'utilisateur et supprimez le code à usage unique de votre base de données, la vérification est terminée.