Pour valider automatiquement les numéros de téléphone, vous devez implémenter les parties client et serveur de la procédure de validation. Ce document explique comment mettre en œuvre la partie serveur.
Le serveur de validation du numéro de téléphone est responsable de trois tâches:
- Créer un message de validation incluant un code unique et au format attendu par l'API SMS Retriever côté client
- Envoi du message de validation à l'appareil de l'utilisateur
- Vérification du code à usage unique lors de son renvoi au serveur et de l'exécution des tâches post-validation requises par votre backend
C'est vous qui décidez des détails de la manière dont votre application interagit avec le serveur. Une approche courante consiste à exposer une API REST avec deux points de terminaison: un qui reçoit des requêtes pour valider un numéro de téléphone donné et envoie les messages de validation par SMS, et un second qui reçoit les codes ponctuels de votre application.
1. Créer un message de validation
Lorsque votre serveur reçoit une requête de validation d'un numéro de téléphone, commencez par créer le message de validation que vous enverrez à l'appareil de l'utilisateur. Ce message doit:
- Ne pas dépasser 140 octets
- contiennent un code unique que le client renvoie à votre serveur afin de terminer le processus de validation (voir Générer un code unique).
- Incluez une chaîne de hachage à 11 caractères qui identifie votre application (consultez la section Calculer la chaîne de hachage de votre application).
Dans le cas contraire, vous pouvez choisir le contenu du message de validation. Il est utile de créer un message à partir duquel vous pourrez facilement extraire le code unique ultérieurement. Par exemple, un message de validation valide peut se présenter comme suit :
Your ExampleApp code is: 123ABC78FA+9qCX9VSu
Générer un code unique
Vous pouvez mettre en œuvre les codes ponctuels de différentes manières, à condition qu'ils soient impossibles à deviner, et que vous puissiez les associer à un utilisateur ou à un numéro de téléphone lorsque l'application cliente les renvoie à votre serveur. Vous devez faciliter la saisie des codes, afin de pouvoir répondre aux situations où les utilisateurs doivent les saisir manuellement.
Une façon de mettre en œuvre des codes uniques consiste à générer des nombres aléatoires que vous utilisez comme clés dans une table de base de données. Par exemple, vous pouvez avoir une table PendingVerifications semblable à celle-ci:
ID | Utilisateur | Expiration |
---|---|---|
123456789... | 1234 | 14/03/2017 1:59 |
Vous pouvez utiliser l'ID encodé en base32 comme code à usage unique.
Calcul de la chaîne de hachage de votre application
Les services Google Play utilisent la chaîne de hachage pour déterminer les messages de validation à envoyer à votre application. La chaîne de hachage est composée du nom de package de votre application et du certificat de clé publique de votre application. Pour générer la chaîne de hachage:
Si vous utilisez la signature d'application Google Play, téléchargez votre certificat de signature d'application (
deployment_cert.der
) dans la section Signature d'application de la console Google Play.Importez ensuite 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 vos APK directement, ignorez cette étape.
Obtenez votre certificat de signature d'application (celui que vous avez importé ci-dessus ou celui que vous utilisez pour signer directement vos APK) en tant que chaîne hexadécimale.
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 vos APK directement, spécifiez votre keystore de production et votre alias de certificat.
Si vous avez créé un keystore temporaire, supprimez-le.
Ajoutez la chaîne hexadécimale au nom du package de votre application, en la séparant par un espace.
Calcule la somme SHA-256 de la chaîne combinée. Veillez à supprimer tous les espaces de début et de fin de la chaîne avant de calculer la somme SHA-256.
Encodez en base64 la valeur binaire de la somme SHA-256. Vous devrez peut-être d'abord décoder la somme SHA-256 de son format de sortie.
La chaîne de hachage de votre application correspond aux 11 premiers caractères du hachage encodé en base64.
La commande suivante calcule la chaîne de hachage à partir du keystore de production de votre application:
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 la classe AppSignatureHelper de l'exemple d'application de récupération de SMS. Toutefois, si vous utilisez la classe auxiliaire, veillez à la supprimer de votre application après avoir obtenu la chaîne de hachage. N'utilisez pas de 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
Après avoir créé le message de validation, envoyez-le au numéro de téléphone de l'utilisateur à l'aide d'un système de SMS.
Par exemple, consultez Validation des applications à l'aide de SMS Twilio sur le site du développeur de Twilio.
Lorsque l'appareil de l'utilisateur reçoit ce message, celui-ci est dirigé vers votre application. Votre application extrait le code unique et le renvoie à votre serveur pour terminer le processus de validation.
3. Valider le code unique lors de son renvoi
Un serveur de validation de numéro de téléphone dispose généralement d'un deuxième point de terminaison qui lui permet de recevoir les codes ponctuels des applications clientes. Lorsque votre serveur reçoit un code unique de votre application à ce point de terminaison, procédez comme suit:
- Vérifiez que le code à usage unique est valide et qu'il n'a pas expiré.
- Notez que la validation du numéro de téléphone a bien été effectuée pour l'utilisateur associé au code unique.
- Supprimez l'enregistrement de base de données à code 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 unique de votre base de données, la validation est terminée.