Comme annoncé lors de Google I / O 2017, Kotlin a rejoint la langue officielle d'Android, utilisant ainsi mBaaS (mobile Backend as a Service) ncmb (nifty cloud mobile backend) et Firebase, immédiatement avec kotlin J'ai essayé la programmation Android. mBaaS est un service qui fournit des fonctions à usage général (gestion des utilisateurs, stockage de données, notification push, etc.) qui sont souvent utilisées pour le développement d'applications à partir du cloud, mais cette fois, nous présenterons les fonctions d'authentification des utilisateurs des deux.
AndroidStudio2.3.3
Kotlin 1.1.3
ncmb
firebase
Veuillez vous référer à l'article ici pour la procédure d'installation de Kotlin dans Android Studio.
ncmb(nifty cloud mobile backend)
Tout d'abord, créez une nouvelle application à partir du tableau de bord.
Lorsque vous créez une nouvelle application, vous recevrez une clé d'application et une clé client.
Le déroulement de la vérification de l'adresse e-mail ncmb est le suivant.
MainActivity.kt
class MainActivity : AppCompatActivity(), View.OnClickListener{
//constant
companion object Factory {
// ApplicationKey
val APP_KEY = "YOUR APP KEY" //Paramètre de clé d'application émis lors de la création d'une nouvelle application
// ClientKey
val CLIENT_KEY = "YOUR CLIENT KEY" //Paramètres de clé client émis lors de la création d'une nouvelle application
}
private var mEmailField: EditText? = null
private var mPasswordField: EditText? = null
private var loginMailAddress: EditText? = null
private var loginPassword: EditText? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//**********Paramètres de clé API et initialisation du SDK**********
NCMB.initialize(this.baseContext, APP_KEY, CLIENT_KEY)
//Inscription des membres
mEmailField = findViewById(R.id.MailAddress) as EditText
mPasswordField = findViewById(R.id.Password) as EditText
//S'identifier
loginMailAddress = findViewById(R.id.login_MailAddress) as EditText
loginPassword = findViewById(R.id.login_Password) as EditText
//Bouton INSCRIPTION
findViewById(R.id.Button)?.setOnClickListener(this)
//Touche LOGIN
findViewById(R.id.login_Button)?.setOnClickListener(this)
//Bouton LOGOUT
findViewById(R.id.logout_Button)?.setOnClickListener(this)
}
}
/**
*Lorsque le bouton est cliqué
*/
override fun onClick(v : View) {
val id = v.id
if(id == (R.id.Button)) {
//Inscription des membres
createAccount(mEmailField?.text.toString())
} else if(id == (R.id.login_Button)) {
//S'identifier
signIn(loginMailAddress?.text.toString(), loginPassword?.text.toString())
} else if(id == (R.id.logout_Button)) {
//Se déconnecter
signOut()
}
}
Le processus d'inscription des membres est effectué par la méthode createAccount qui a un e-mail de type String comme argument, qui est appelé lorsque le bouton INSCRIPTION est enfoncé.
MainActivity.kt
private fun createAccount(email: String) {
NCMBUser.requestAuthenticationMailInBackground(email) { e ->
if(e == null) {
println("Authentification des e-mails utilisateur réussie")
} else {
println("Échec de l'authentification de la messagerie de l'utilisateur")
}
}
}
Si vous l'écrivez en java, il ressemblera à ceci. La description est plus redondante que kotlin. La méthode requestAuthenticationMailInBackground de NCMBUser utilise l'adresse e-mail saisie par l'utilisateur et [DoneCallback](http://www.programcreek.com/java-api-examples/index.php?source_dir=ncmb_android-master/ncmb-core/src] comme arguments. Il prend une interface (/main/java/com/nifty/cloud/mb/core/DoneCallback.java) comme argument. Ici, [DoneCallback](http://www.programcreek.com/java-api-examples/index.php?source_dir=ncmb_android-master/ncmb-core/src/main/java/com/nifty/cloud/mb/ Une classe anonyme qui implémente l'interface core / DoneCallback.java) est générée et transmise comme argument.
MainActivity.java
private void createAccount(String email) {
NCMBUser.requestAuthenticationMailInBackground(email,
new DoneCallback() {
@Override
public void done(NCMBException e) {
if (e == null) {
System.out.println("Authentification des e-mails utilisateur réussie");
} else if {
System.out.println("Échec de l'authentification de la messagerie de l'utilisateur");
}
}
});
}
Ceux qui ont écrit en kotlin omettent l'interface DoneCallback et la méthode appelée done (NCMBException e), mais il s'agit d'une conversion SAM par l'interface SAM. SAM (Single Abstract Method) est une interface qui n'a qu'une seule méthode abstraite. [DoneCallback](http://www.programcreek.com/java-api-examples/index.php?source_dir=ncmb_android-master/ncmb-core/src/main/java/com/nifty/cloud/mb/core/ La méthode abstraite done (NCMBException e) de l'interface DoneCallback.java) a un type void comme valeur de retour et un type NCMBException comme argument. Par conséquent, il est possible de le décrire proprement comme kotlin en omettant le type de littéral de fonction et l'inférence de type. Pour les fonctions littérales, je me suis référé à l'article ici.
Si vous pouvez vous inscrire avec succès en tant que membre, vos informations d'utilisateur seront enregistrées sur l'écran de gestion des membres de ncmb.
Le processus de connexion est effectué par la méthode signIn qui a un e-mail de type String et un mot de passe de type String comme arguments, qui est appelée lorsque le bouton LOGIN est enfoncé. Vous pouvez vous connecter en appelant la méthode loginWithMailAddressInBackground de NCMBUser dans la méthode signIn.
MainActivity.kt
private fun signIn(email: String, password: String) {
NCMBUser.loginWithMailAddressInBackground(email, password) {user, e ->
if(e == null) {
println("Connexion réussie")
} else {
println("Erreur d'authentification:" + e.message.toString() )
}
}
}
Après avoir enregistré le mot de passe dans l'e-mail d'inscription des membres et vous être inscrit en tant que membre, vous pourrez vous connecter avec votre adresse e-mail et votre mot de passe.
Le processus de déconnexion appelle la méthode signOut sans argument, qui est appelée lorsque le bouton de déconnexion est enfoncé. Vous pouvez vous déconnecter en appelant la méthode logoutInBackground de NCMBUser dans la méthode sighOut.
MainActivity.kt
private fun signOut() {
NCMBUser.logoutInBackground{ e ->
if (e == null) {
println("Déconnexion réussie")
} else {
println("Échec de la déconnexion")
}
}
}
Si vous souhaitez autoriser l'authentification par mot de passe par adresse e-mail, cochez «Autoriser l'authentification par adresse e-mail / mot de passe» dans Paramètres de l'application → Paramètres d'authentification des membres sur le tableau de bord et enregistrez-les.
Firebase
Connectez-vous à Firebase avec votre compte Google et créez un nouveau projet.
Activez l'état de l'e-mail / mot de passe depuis l'écran d'administration de Firebase Authentication.
MainActivity.kt
class MainActivity : AppCompatActivity(), View.OnClickListener {
private var mEmailField: EditText? = null
private var mPasswordField: EditText? = null
private var loginEmail: EditText? = null
private var loginPassword: EditText? = null
private var mAuth: FirebaseAuth? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//Nouvel élément utilisateur
mEmailField = findViewById(R.id.MailAddress) as EditText
mPasswordField = findViewById(R.id.Password) as EditText
//Articles à la connexion
loginEmail = findViewById(R.id.login_MailAddress) as EditText
loginPassword = findViewById(R.id.login_Password) as EditText
//Lorsque vous appuyez sur le bouton INSCRIPTION
findViewById(R.id.Button)?.setOnClickListener(this)
//Lorsque vous appuyez sur le bouton LOGIN
findViewById(R.id.login_Button)?.setOnClickListener(this)
//Lorsque vous appuyez sur le bouton LOG OUT
findViewById(R.id.logout_Button)?.setOnClickListener(this)
//Obtenir l'instance FirebaseAuth
mAuth = FirebaseAuth.getInstance()
}
/**
*Traitement des clics de bouton
*/
override fun onClick(v: View) {
val i = v.id
if (i == R.id.Button) {
//Lorsque le nouveau bouton est enfoncé
createAccount(mEmailField?.text.toString(), mPasswordField?.text.toString())
} else if (i == R.id.login_Button) {
//Lorsque le bouton de connexion est enfoncé
signIn(loginEmail?.text.toString(), loginPassword?.text.toString())
} else if (i == R.id.logout_Button) {
//Lorsque le bouton de déconnexion est enfoncé
signOut()
}
}
Ajout de la dépendance d'authentification Firebase à build.gradle au niveau de l'application
build.gradle
dependencies {
(Omis)
// Firebase Authentication
compile 'com.google.firebase:firebase-auth:10.0.1'ajouter à
}
Dans la méthode createAccount appelée lorsque vous appuyez sur le bouton INSCRIPTION, transmettez l'adresse e-mail et le mot de passe saisis par l'utilisateur à la méthode createUserWithEmailAndPassword de l'instance Firebase pour créer un nouveau compte.
MainActivity.kt
private fun createAccount(email: String, password: String) {
mAuth?.createUserWithEmailAndPassword(email, password)
?.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
println("Création d'utilisateur réussie")
sendEmailVerrification()//Envoyer un e-mail de confirmation
} else {
println("Échec de la création de l'utilisateur:" + task.exception.toString())
}
}
}
** Attention **: Dans ncmb, un e-mail de confirmation a été envoyé au moment de l'enregistrement de l'adhésion, et le lien dans l'e-mail a été cliqué pour définir le mot de passe et l'enregistrement de l'adhésion a été terminé, mais dans Firebase, l'e-mail de confirmation a été envoyé au moment de l'enregistrement de l'adhésion. Ça ne sera pas. Par conséquent, lorsqu'un nouvel utilisateur est créé avec succès, une méthode pour envoyer un e-mail de confirmation est créée et appelée.
Si l'utilisateur peut être créé normalement, les informations utilisateur seront enregistrées dans l'écran de gestion de Firebase.
Si vous avez réussi à créer un nouvel utilisateur, appelez cette méthode pour envoyer un e-mail de confirmation à l'utilisateur.
MainActivity.kt
private fun sendEmailVerrification() {
val user = FirebaseAuth.getInstance().currentUser
user?.sendEmailVerification()
?.addOnCompleteListener(this) { task ->
if(task.isSuccessful) {
println("Transmission réussie des e-mails")
} else {
println("Échec de la transmission des e-mails:" + task.exception.toString())
}
}
}
Dans la méthode dignIn appelée lorsque vous appuyez sur le bouton LOGIN, transmettez l'adresse e-mail et le mot de passe saisis par l'utilisateur à la méthode signInWithEmailAndPassword de l'instance Firebase en tant qu'arguments.
MainActivity.kt
private fun signIn(email: String, password: String) {
mAuth?.signInWithEmailAndPassword(email, password)
?.addOnCompleteListener(this) { task ->
if(task.isSuccessful) {
println("Utilisateur de connexion réussi:" + mAuth?.currentUser.toString())
} else {
println("Erreur d'authentification")
}
}
}
La méthode signOut qui est appelée lorsque vous appuyez sur le bouton LOGOUT appelle la méthode signOut de l'instance Firebase pour se déconnecter.
MainActivity.kt
private fun signOut() {
mAuth?.signOut()
}
Firebase Analytics Firebase dispose également d'un outil appelé Firebase Analytics, qui se positionne comme Google Analytics spécialisé pour les applications mobiles, et bien que je ne l'ai pas étudié en détail, il semble être utile pour l'analyse des accès. Pour la procédure d'installation, l'article ici était facile à comprendre.
[Document officiel du NCMB](http://mb.cloud.nifty.com/doc/current/user/authorize_email_android.html# Implementation in App) Document officiel Firebase http://qiita.com/RyotaMurohoshi/items/01b370f34a4bf96f5c39 http://kotlin.hatenablog.jp/entry/2012/12/10/093018
Recommended Posts