Comment intégrer le service de certification Huawei dans Flutter
Récemment, il a été découvert que le service d'authentification AGC de Huawei prend en charge le framework Flutter. J'attendais avec impatience le support de cette plate-forme depuis longtemps, donc j'ai hâte d'y accéder et d'associer mon compte de messagerie.
Étapes d'intégration
- Installez l'environnement
Flutter a) Téléchargez le package sdk Flutter, adresse: https://flutter.dev/docs/get-started/install/windows
Décompressez le package compressé dans n'importe quel dossier, tel que D: \ Flutter
b) Ajoutez le fichier de commande flutter à la variable d'environnement.Le chemin que j'ai ajouté ici est D: \ Flutter \ flutter_windows_1.22.2-stable \ flutter \ bin.
c) Cliquez sur "File-Settings-Plugins" dans Android Studio, téléchargez les plug-ins Flutter et Dart et redémarrez Android Studio pour que les plug-ins prennent effet.
- Ouvrir le service et créer un projet
a) Créez une application Android dans AGC et activez le service d'authentification
b) Ouvrez le compte anonyme, le compte de téléphone mobile et le compte de messagerie dans le service d'authentification
c) Créer un nouveau projet Flutter dans Android Studio
d) Placez le fichier agconnect-services.json dans le répertoire Android / app
e) Configurez l'adresse de l'entrepôt Maven et l'adresse du plug-in AGC.
a. Ouvrez le fichier build.gradle dans le dossier android du projet Flutter.
b. Configurez l'adresse de l'entrepôt maven dans tous les projets -> référentiels.
c. Configurez l'adresse de l'entrepôt maven dans buildscript-> référentiels.
d. Configurez l'adresse du plug-in AppGallery Connect dans les dépendances buildscript->.
- Ajoutez une dépendance de compilation et une adresse de plug-in AGC.
a. Ouvrez le fichier build.gradle dans le dossier android / app du projet Flutter.
b. Ajoutez la configuration suivante au fichier.
- Intégrez le SDK
pour ajouter des dépendances dans le fichier pubspec.yaml du projet Flutter:
dependencies:
flutter:
sdk: flutter
# Add the following line:
agconnect_auth: ^1.1.0
Cliquez ensuite sur Pub pour synchroniser
- Fonction d'accès
- Connexion au compte anonyme Le compte
anonyme n'a besoin que d'appeler l'interface signInAnonymously pour se connecter
_signIn() async {
AGCAuth.instance.signInAnonymously().then((value) {
setState(() {
_log =
'signInAnonymously = ${value.user.uid} , ${value.user.providerId}';
});
});
}
Grâce à la valeur, nous pouvons obtenir des informations sur l'utilisateur, par exemple, ici nous obtenons l'ID utilisateur.
- Numéro de téléphone portable et authentification par e-mail
La vérification du compte de messagerie du numéro de téléphone mobile doit d'abord envoyer un code de vérification,
Pour demander un code de vérification pour un numéro de téléphone mobile, appelez la méthode requestVerifyCode et transmettez le numéro de téléphone mobile, le code du pays et les paramètres en tant que paramètres:
_requestPhoneVerifyCode(VerifyCodeAction action) {
String countryCode = _countryCodeController.text;
String phoneNumber = _phoneNumberController.text;
VerifyCodeSettings settings = VerifyCodeSettings(action, sendInterval: 30);
PhoneAuthProvider.requestVerifyCode(countryCode, phoneNumber, settings).then((value) => print(value.validityPeriod));
}
Pour demander un code de vérification par e-mail, appelez la méthode requestVerifyCode et transmettez l'e-mail et les paramètres en tant que paramètres:
_requestEmailVerifyCode(VerifyCodeAction action) {
String email = _emailController.text;
VerifyCodeSettings settings = VerifyCodeSettings(action, sendInterval: 30);
EmailAuthProvider.requestVerifyCode(email, settings)
.then((value) => print(value.validityPeriod));
}
Puis est l'opération de création d'un utilisateur:
Pour créer un utilisateur de compte mobile, vous devez appeler la méthode createPhoneUser et transmettre l'objet PhoneUser encapsulé
_createPhoneUser() async {
bool result = await _showPhoneDialog(VerifyCodeAction.registerLogin);
if (result == null) {
print("cancel");
return;
}
String countryCode = _countryCodeController.text;
String phoneNumber = _phoneNumberController.text;
String verifyCode = _verifyCodeController.text;
String password = _passwordController.text;
AGCAuth.instance.createPhoneUser(PhoneUser(countryCode, phoneNumber, verifyCode, password: password)) .then((value) {
setState(() {
_log = 'createPhoneUser = ${value.user.uid} , ${value.user.providerId}';
});
}).catchError((error)=>print(error));
}
Pour créer un utilisateur de compte de messagerie, vous devez appeler la méthode createEmailUser et transmettre l'objet EmailUser encapsulé.
_createEmailUser() async {
bool result = await _showEmailDialog(VerifyCodeAction.registerLogin);
if (result == null) {
print("cancel");
return;
}
String email = _emailController.text;
String verifyCode = _verifyCodeController.text;
String password = _passwordController.text;
AGCAuth.instance
.createEmailUser(EmailUser(email, verifyCode, password: password))
.then((value) {
setState(() {
_log = 'createEmailUser = ${value.user.uid} , ${value.user.providerId}';
});
}).catchError((error) => print(error));
}
Le dernier est la fonction de connexion, il existe deux modes de connexion, l'un est le mode de connexion par mot de passe:
- Compte de téléphone mobile, appelez la méthode de connexion et transmettez les informations d'authentification générées à l'aide du numéro de téléphone mobile.
_signInWithPassword() async {
bool result = await _showPhoneDialog(VerifyCodeAction.registerLogin);
if (result == null) {
print("cancel");
return;
}
String countryCode = _countryCodeController.text;
String phoneNumber = _phoneNumberController.text;
String password = _passwordController.text;
AGCAuthCredential credential = PhoneAuthProvider.credentialWithPassword(countryCode, phoneNumber, password);
AGCAuth.instance.signIn(credential).then((value) {
setState(() {
_log = 'signInWithPassword = ${value.user.uid} , ${value.user.providerId}';
});
});
}
- Compte e-mail: appelez la méthode de connexion et transmettez les informations d'authentification générées par l'e-mail et le mot de passe.
_signInWithPassword() async {
bool result = await _showEmailDialog(VerifyCodeAction.registerLogin);
if (result == null) {
print("cancel");
return;
}
String email = _emailController.text;
String password = _passwordController.text;
AGCAuthCredential credential =
EmailAuthProvider.credentialWithPassword(email, password);
AGCAuth.instance.signIn(credential).then((value) {
setState(() {
_log =
'signInWithPassword = ${value.user.uid} , ${value.user.providerId}';
});
});
}
L'autre est la méthode de connexion par code de vérification:
- Compte de téléphone mobile: appelez la méthode de connexion et transmettez les informations d'authentification générées par le téléphone mobile, le code de vérification et le mot de passe.
_signInWithVerifyCode() async {
bool result = await _showPhoneDialog(VerifyCodeAction.registerLogin);
if (result == null) {
print("cancel");
return;
}
String countryCode = _countryCodeController.text;
String phoneNumber = _phoneNumberController.text;
String verifyCode = _verifyCodeController.text;
String password = _passwordController.text;
AGCAuthCredential credential = PhoneAuthProvider.credentialWithVerifyCode(countryCode, phoneNumber, verifyCode, password: password);
AGCAuth.instance.signIn(credential).then((value) {
setState(() {
_log = 'signInWithVerifyCode = ${value.user.uid} , ${value.user.providerId}';
});
});
}
- Compte e-mail: appelez la méthode de connexion et transmettez les informations d'authentification générées par l'e-mail, le code de vérification et le mot de passe.
_signInWithVerifyCode() async {
bool result = await _showEmailDialog(VerifyCodeAction.registerLogin);
if (result == null) {
print("cancel");
return;
}
String email = _emailController.text;
String verifyCode = _verifyCodeController.text;
String password = _passwordController.text;
AGCAuthCredential credential = EmailAuthProvider.credentialWithVerifyCode(
email, verifyCode,
password: password);
AGCAuth.instance.signIn(credential).then((value) {
setState(() {
_log =
'signInWithVerifyCode = ${value.user.uid} , ${value.user.providerId}';
});
});
}
Les étapes telles que la création d'un jwt pour obtenir un jeton à partir de votre propre compte et de votre propre compte sont des étapes côté serveur, et il vous suffit d'obtenir le jeton pour vous connecter du côté final.
_signIn() async {
bool result = await _showSelfBuildDialog(VerifyCodeAction.registerLogin);
if (result == null) {
print("cancel");
return;
}
String token = _selfBuildController.text;
AGCAuthCredential credential = SelfBuildAuthProvider.credentialWithToken(token);
AGCAuth.instance.signIn(credential).then((value) {
setState(() {
_log = 'signIn = ${value.user.uid} , ${value.user.providerId}';
});
});
}
- L'emballage
est le même qu'Android, il suffit de cliquer pour exécuter dans Android Studio
Pour plus de détails, veuillez consulter:
Guide de développement du service de certification:
https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-auth-introduction-0000001053732605
Laboratoire de codes du service d'authentification (Android):
https://developer.huawei.com/consumer/cn/codelab/AuthenticationService/index.html#0
Lien d'origine:https://developer.huawei.com/consumer/cn/forum/topic/0201436847294530241?fid=0101271690375130218
Auteur: Mayism