Vérification par e-mail après l'inscription
Syntaxe
- Envoyer la vérification par e-mail à l’adresse e-mail de l’utilisateur connecté au dossier. Firebase vous permet de [personnaliser le contenu de votre e-mail][1]
- Lorsque l’e-mail atteint le compte de messagerie de l’utilisateur, l’utilisateur clique sur
- À l’aide du routeur de votre choix (utilisé angular-ui-router dans l’exemple ci-dessus), interceptez les paramètres dans l’URL.
- Chew les paramètres en utilisant la fonction
applyCode
dans Firebase. - Voir ci-dessous pour les fonctions impliquées dans le processus ci-dessus.
[1] : https://console.firebase.google.com/project/your-project-name-here/authentication/emails
Paramètres
La fonction… | Est-ce que |
---|---|
[sendEmailVerification()][1] | Envoie un e-mail de vérification à un utilisateur. |
[applyActionCode()][2] | Applique le code d’action qui change emailVerified de false à true |
[1] : https://firebase.google.com/docs/reference/js/firebase.User#sendEmailVerification [2] : https://firebase.google.com/docs/reference/js/firebase.auth.Auth.html#applyActionCode
Ce qui précède résume à peu près comment utiliser le schéma de vérification des e-mails avec Firebase. Jusqu’à présent, c’est l’un des moyens les plus simples de vérifier les e-mails que j’ai vus.
Il y a une petite explication détaillée de l’exemple ci-dessus disponible sur [Email Verification with Firebase 3.0 SDK.][1]
[1] : https://blog.khophi.co/email-verification-firebase-3-0-sdk/
Code d’action de vérification d’envoi avec processus - AngularJS
// thecontroller.js
$scope.sendVerifyEmail = function() {
console.log('Email sent, whaaaaam!');
currentAuth.sendEmailVerification();
}
// where currentAuth came from something like this:
// routerconfig
....
templateUrl: 'bla.html',
resolve: {
currentAuth:['Auth', function(Auth) {
return Auth.$requireSignIn() // this throws an AUTH_REQUIRED broadcast
}]
}
...
// intercept the broadcast like so if you want:
....
$rootScope.$on("$stateChangeError", function(event, toState, toParams, fromState, fromParams, error) {
if (error === "AUTH_REQUIRED") {
$state.go('login', { toWhere: toState });
}
});
....
// So user receives the email. How do you process the `oobCode` that returns?
// You may do something like this:
// catch the url with its mode and oobCode
.state('emailVerify', {
url: '/verify-email?mode&oobCode',
templateUrl: 'auth/verify-email.html',
controller: 'emailVerifyController',
resolve: {
currentAuth:['Auth', function(Auth) {
return Auth.$requireSignIn()
}]
}
})
// Then digest like so where each term is what they sound like:
.controller('emailVerifyController', ['$scope', '$stateParams', 'currentAuth', 'DatabaseRef',
function($scope, $stateParams, currentAuth, DatabaseRef) {
console.log(currentAuth);
$scope.doVerify = function() {
firebase.auth()
.applyActionCode($stateParams.oobCode)
.then(function(data) {
// change emailVerified for logged in User
toastr.success('Verification happened', 'Success!');
})
.catch(function(error) {
$scope.error = error.message;
toastr.error(error.message, error.reason, { timeOut: 0 });
})
};
}
])