Bonjour à tous. Je reviens avec un nouveau problème. Je souhaiterais que les utilisateurs utilisant la méthode email/password reçoivent un mail pour valider leur compte. Mon problème et que l'envoi du mail de vérification de l'adresse mail fonctionne uniquement pour ceux se connectant avec google.
Quequ'un a deja eu se problème ou en connais la cause ?
class LoginActivity : AppCompatActivity() {
private val myRequestCode: Int = *****
private lateinit var providers: List<AuthUI.IdpConfig>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
providers = listOf(
//AuthUI.IdpConfig.FacebookBuilder().build(),// LOGIN FACEBOOK
AuthUI.IdpConfig.GoogleBuilder().build(),// LOGIN GOOGLE
AuthUI.IdpConfig.EmailBuilder().build(),// LOGIN EMAIL
AuthUI.IdpConfig.PhoneBuilder().build()// LOGIN SMS
)
val auth = FirebaseAuth.getInstance()
val user = auth.currentUser
//Si PERSONNE DE CONNECTE ON AFFICHE LES BOUTONS DE CONNEXION
if (user == null || user.toString() == "USER") {
//SI PAS DE RESEAU
if (!isConnected(this)) {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
Toast.makeText(this, "Connnexion nécessaire.", Toast.LENGTH_SHORT).show()
} //SI RESEAU
else {
showSignInOptions()
}
} //Se lance si on est connecté au lancement de l'application
else {
//SI PAS DE RESEAU
if (!isConnected(this)) {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
Toast.makeText(this, "Connnexion nécessaire.", Toast.LENGTH_SHORT).show()
} //SI RESEAU
else {
//Se lance si on est connecté en memoire au lancement de l'application
val intent = Intent(this, SplashScreenActivity::class.java)
startActivity(intent)
}
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == myRequestCode) {
val response = IdpResponse.fromResultIntent(data)
if (resultCode == Activity.RESULT_OK) {
// obtention de l'utilisteur après connection
val user = FirebaseAuth.getInstance().currentUser
if (user != null) {
//Se lance à chaque connection
creationUser(user)
val intent = Intent(this, SplashScreenActivity::class.java)
startActivity(intent)
if (user.email != null) {
Toast.makeText(this, "" + user.email, Toast.LENGTH_SHORT).show()
} else if (user.phoneNumber != null) {
Toast.makeText(this, "" + user.phoneNumber, Toast.LENGTH_SHORT).show()
}
}
} else {
val intent = Intent(this, MainActivity::class.java)
startActivity(intent)
Toast.makeText(this, "" + response!!.error!!.message, Toast.LENGTH_SHORT).show()
}
}
}
private fun showSignInOptions() {
startActivityForResult(
AuthUI.getInstance().createSignInIntentBuilder()
.setAvailableProviders(providers)
.setTheme(R.style.LoginTheme)
.setIsSmartLockEnabled(false, true)
.build(), myRequestCode
)
}
}
fun creationUser(user: FirebaseUser) {
val db = FirebaseFirestore.getInstance()
val userNew = hashMapOf(
"name" to user.displayName,
"score" to 0
)
val docRef = db.collection("users").document(user.uid)
docRef.get()
.addOnSuccessListener { document ->
if (!document.exists()) {
sendEmailVerification()
db.collection("users").document(user.uid)
.set(userNew)
}
}
}
private fun sendEmailVerification() {
// [START send_email_verification]
val auth = FirebaseAuth.getInstance()
val user = auth.currentUser
println("PRINTLN USER 1"+user!!.email+" + "+user.isEmailVerified)
user.sendEmailVerification()
.addOnCompleteListener { task ->
if (task.isSuccessful) {
Log.d("MESSAGE", "Email sent.")
}
}
// [END send_email_verification]
}
Merci à l'aide que l'on pourra un nouvelle fois m'apporte.
sa envois un mail dans la langue du système de l'utilisateur.
en espérant avoir aider
Pas d'envoi du mail de verification Firebase
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.