Android
Users
Intégrer la connexion Facebook à Android avec Parse
22 min
comment ajouter la connexion facebook à votre application android introduction dans ce guide, vous apprendrez comment vous connecter en utilisant la connexion facebook et parse user parse user classe via back4app ce tutoriel utilise une application de base créée dans android studio 4 1 1 avec buildtoolsversion=30 0 3 buildtoolsversion=30 0 3 , compile sdk version = 30 compile sdk version = 30 et targetsdkversion 30 targetsdkversion 30 à tout moment, vous pouvez accéder au projet android complet construit avec ce tutoriel sur nos dépôts github dépôt d'exemple kotlin dépôt d'exemple java objectif créer une fonctionnalité de connexion avec facebook pour votre application android en utilisant parse et back4app prérequis pour compléter ce tutoriel, nous avons besoin de android studio une application créée sur back4app remarque suivez le tutoriel de nouvelle application parse pour apprendre à créer une application parse sur back4app une application android connectée à back4app remarque suivez le tutoriel d'installation du sdk parse pour créer un projet android studio connecté à back4app un appareil (ou appareil virtuel ) fonctionnant sous android 4 1 (jelly bean) ou version ultérieure 1 configuration de facebook pour commencer à utiliser les fonctions de facebook, vous devez allez sur le site des développeurs facebook et créez un compte et une application suivez le guide de démarrage rapide de facebook en cliquant ici et faites attention aux recommandations suivantes voici les étapes incluses dans le guide de démarrage rapide de facebook, que vous devez suivre attentivement, car vous n'allez pas les suivre précisément comme facebook le suggère dans l'étape 3 au lieu d'ajouter dans le dependencies{} dependencies{} section à build gradle (module\ app) build gradle (module\ app) , ajoutez le code suivant dans le dependencies{} dependencies{} section à build gradle (module\ app) build gradle (module\ app) n'oubliez pas de mettre à jour la version de parse facebook utils sdk pour android vers la dernière version vous pouvez découvrir quelle est la dernière version sur le site jitpack , en suivant ces étapes sur le site de jitpack, collez parse community\ parsefacebookutils android parse community\ parsefacebookutils android dans la url du dépôt git url du dépôt git après avoir fait cela, cliquez sur le rechercher rechercher bouton ensuite, vous devriez voir les versions disponibles de parse sdk pour android, comme montré dans l'image suivante dans l'étape 4, on vous demandera d'ajouter la permission internet à l' application application élément dans /app/manifest/androidmanifest xml /app/manifest/androidmanifest xml fichier, mais vous l'avez déjà ajoutée en suivant le tutoriel d'installation de parse sdk donc vous n'avez pas besoin de le faire dans l'étape 6, vous devrez fournir des hachages de clé, donc vous devez avoir open ssl installé le guide de facebook ne fournit pas de lignes de commande pour générer des hachages de clé sous linux, mais c'est simple, car tout ce que cela nécessite de vous est d'ouvrir une fenêtre de terminal et d'exécuter la commande suivante ne suivez pas les étapes du guide de démarrage rapide de facebook juste après étape 6 qu'est ce que sha 1 (algorithme de hachage sécurisé) sha 1, appelé l'algorithme de hachage sécurisé, est l'algorithme de cryptage le plus courant sha 1, conçu par l'agence nationale de sécurité des états unis l'empreinte sha 1 est une clé unique générée pour votre pc qui peut être utilisée pour la signature il est principalement utilisé pour soumettre l'utilisation de certaines api (comme l'api facebook que nous utiliserons dans ce guide) si vous souhaitez en savoir plus, vous pouvez visiter la page wikipedia de sha 1 vous devriez suivre les autres étapes décrites dans le guide de démarrage rapide de facebook et non mentionnées ici 2 liez votre application facebook avec back4app allez sur le tableau de bord de votre application à site web de back4app et cliquez sur paramètres du serveur paramètres du serveur trouvez le bloc “connexion facebook” et cliquez sur paramètres paramètres le bloc “connexion facebook” ressemble à ceci 3\ nous devons ajouter notre facebook id, que nous avons obtenu du guide facebook dans string xml (vous devriez avoir suivi le guide facebook et fait cela auparavant) allez dans votre projet android studio, ouvrez votre fichier strings /app/src/main/res/values/strings xml /app/src/main/res/values/strings xml , copiez votre facebook app id facebook app id et collez le dans le champ facebook appid facebook appid de la dernière page de back4app que vous avez ouverte enfin, appuyez sur le bouton + + 3 ajoutez l'élément provider dans le fichier manifest retournez dans votre projet android studio et à l'intérieur de l'élément application application dans le fichier /app/manifest/androidmanifest xml /app/manifest/androidmanifest xml juste après l'élément meta data meta data , ajoutez le code suivant 1 \<provider 2 android\ name="com facebook facebookcontentprovider" 3 \<! don't forget to put your facebook app id in the following link > 4 android\ authorities="com facebook app facebookcontentprovideryour facebook app id" 5 android\ exported="true" /> n'oubliez pas de mettre votre id d'application facebook dans le code ci dessus 4 initialiser les sdk parse facebook util dans votre projet android studio, dans le fichier java appelé app app qui étend application que vous avez créé pour initialiser le sdk parse, juste après son oncreate oncreate méthode, juste après l'appel de parse initialize() parse initialize() , utilisez le code suivant pour initialiser le sdk parse facebook utils si vous n'avez pas de app java app java fichier comme décrit dans cette étape, accédez à la documentation d'installation du sdk parse pour android https //www back4app com/docs/android/parse android sdk et assurez vous d'avoir suivi toutes les étapes nécessaires pour installer correctement le sdk parse si vous n'installez pas correctement le sdk parse, votre connexion facebook avec parse ne fonctionnera pas 5 configurer au début de chaque activité parse, importez ce qui suit 6 se connecter pour implémenter votre activité de connexion, faites ce qui suit importez dans votre loginactivity loginactivity , en plus des dépendances importées dans étape 4 2\ pour implémenter la connexion facebook, utilisez simplement le code suivant 1 final progressdialog dialog = new progressdialog(this); 2 dialog settitle("please, wait a moment "); 3 dialog setmessage("logging in "); 4 dialog show(); 5 collection\<string> permissions = arrays aslist("public profile", "email"); 6 parsefacebookutils loginwithreadpermissionsinbackground(this, permissions, (user, err) > { 7 dialog dismiss(); 8 if (err != null) { 9 log e("facebookloginexample", "done ", err); 10 toast maketext(this, err getmessage(), toast length long) show(); 11 } else if (user == null) { 12 toast maketext(this, "the user cancelled the facebook login ", toast length long) show(); 13 log d("facebookloginexample", "uh oh the user cancelled the facebook login "); 14 } else if (user isnew()) { 15 toast maketext(this, "user signed up and logged in through facebook ", toast length long) show(); 16 log d("facebookloginexample", "user signed up and logged in through facebook!"); 17 getuserdetailfromfb(); 18 } else { 19 toast maketext(this, "user logged in through facebook ", toast length long) show(); 20 log d("facebookloginexample", "user logged in through facebook!"); 21 showalert("oh, you!", "welcome back!"); 22 } 23 });1 val dlg = progressdialog(this) 2 dlg settitle("please, wait a moment ") 3 dlg setmessage("logging in ") 4 dlg show() 5 val permissions collection\<string> = listof("public profile", "email") 6 parsefacebookutils loginwithreadpermissionsinbackground(this, permissions) { user parseuser?, err parseexception? > 7 dlg dismiss() 8 when { 9 err != null > { 10 log e("facebookloginexample", "done ", err) 11 toast maketext(this, err message, toast length long) show() 12 } 13 user == null > { 14 toast maketext(this, "the user cancelled the facebook login ", toast length long) show() 15 log d("facebookloginexample", "uh oh the user cancelled the facebook login ") 16 } 17 user isnew > { 18 toast maketext(this, "user signed up and logged in through facebook ", toast length long) show() 19 log d("facebookloginexample", "user signed up and logged in through facebook!") 20 getuserdetailfromfb() 21 } 22 else > { 23 toast maketext(this, "user logged in through facebook ", toast length long) show() 24 log d("facebookloginexample", "user logged in through facebook!") 25 showalert("oh, you!", "welcome back!") 26 } 27 } 28 } dans le projet exemple, ce code est placé à l'intérieur d'un connexion via facebook connexion via facebook rappel de bouton 3\ après une connexion réussie via facebook à notre application, nous pouvons maintenant obtenir quelques informations de base sur l'utilisateur connecté comme vous pouvez le voir, il y a beaucoup d'autres méthodes incluses dans le code ci dessus la getuserdetailfromfb getuserdetailfromfb méthode est responsable de la récupération des détails de l'utilisateur voici le code pour cette méthode 1 private void getuserdetailfromfb() { 2 graphrequest request = graphrequest newmerequest(accesstoken getcurrentaccesstoken(), (object, response) > { 3 parseuser user = parseuser getcurrentuser(); 4 try { 5 if (object has("name")) 6 user setusername(object getstring("name")); 7 if (object has("email")) 8 user setemail(object getstring("email")); 9 } catch (jsonexception e) { 10 e printstacktrace(); 11 } 12 user saveinbackground(e > { 13 if (e == null) { 14 showalert("first time login!", "welcome!"); 15 } else 16 showalert("error", e getmessage()); 17 }); 18 }); 19 20 bundle parameters = new bundle(); 21 parameters putstring("fields", "name,email"); 22 request setparameters(parameters); 23 request executeasync(); 24 }1 private fun getuserdetailfromfb() { 2 val request = 3 graphrequest newmerequest(accesstoken getcurrentaccesstoken()) { `object` jsonobject, graphresponse? > 4 val user = parseuser getcurrentuser() 5 try { 6 user username = `object` getstring("name") 7 } catch (e jsonexception) { 8 e printstacktrace() 9 } 10 try { 11 user email = `object` getstring("email") 12 } catch (e jsonexception) { 13 e printstacktrace() 14 } 15 user saveinbackground { 16 if (it == null) 17 showalert("first time login!", "welcome!") 18 else 19 showalert("error", it message) 20 } 21 } 22 val parameters = bundle() 23 parameters putstring("fields", "name,email") 24 request parameters = parameters 25 request executeasync() 26 } 4\ il est intéressant d'ajouter une méthode pour afficher des alert dialogs et rendre le processus plus professionnel dans cette fonction, nous obtenons également un paramètre utilisateur en allant à la page mainactivity, nous envoyons ce paramètre utilisateur dans l'intent, et dans la mainactivity, nous récupérons les informations de cet utilisateur et les affichons à l'écran la méthode ci dessous fait cela 1 private void showalert(string title, string message) { 2 alertdialog builder builder = new alertdialog builder(this) 3 settitle(title) 4 setmessage(message) 5 setpositivebutton("ok", (dialog, which) > { 6 dialog cancel(); 7 intent intent = new intent(this, mainactivity class); 8 intent addflags(intent flag activity clear task | intent flag activity new task); 9 startactivity(intent); 10 }); 11 alertdialog ok = builder create(); 12 ok show(); 13 }1 private fun showalert(title string, message string?) { 2 val builder = alertdialog builder(this) 3 settitle(title) 4 setmessage(message) 5 setpositivebutton("ok") { dialog dialoginterface, which int > 6 dialog cancel() 7 val intent = intent(this\@loginactivity, mainactivity class java) 8 intent addflags(intent flag activity clear task or intent flag activity new task) 9 startactivity(intent) 10 } 11 val ok = builder create() 12 ok show() 13 } 5\ si vous souhaitez associer un parseuser existant à un compte facebook, vous pouvez le lier comme ceci 1 collection\<string> permissions = arrays aslist("public profile", "email"); 2 if (!parsefacebookutils islinked(parseuser getcurrentuser())) { 3 parsefacebookutils linkwithreadpermissionsinbackground(parseuser getcurrentuser(), this, permissions, ex > { 4 if (parsefacebookutils islinked(parseuser getcurrentuser())) { 5 toast maketext(this, "woohoo, user logged in with facebook ", toast length long) show(); 6 log d("facebookloginexample", "woohoo, user logged in with facebook!"); 7 } 8 }); 9 } else { 10 toast maketext(this, "you have already linked your account with facebook ", toast length long) show(); 11 }1 val permissions= listof("public profile","email") 2 if (!parsefacebookutils islinked(parseuser getcurrentuser())){ 3 parsefacebookutils linkwithreadpermissionsinbackground(parseuser getcurrentuser(),this,permissions) { 4 if (parsefacebookutils islinked(parseuser getcurrentuser())){ 5 toast maketext(this, "woohoo, user logged in with facebook ", toast length long) show() 6 log d("facebookloginexample", "woohoo, user logged in with facebook!") 7 } 8 } 9 } else { 10 toast maketext(this, "you have already linked your account with facebook ", toast length long) show() 11 } 12 } dans le projet d'exemple, ce code est placé à l'intérieur d'un liez votre compte à facebook liez votre compte à facebook rappel de bouton 6\ si vous souhaitez dissocier facebook d'un utilisateur, faites simplement ceci 1 parsefacebookutils unlinkinbackground(parseuser getcurrentuser(), ex > { 2 if (ex == null) { 3 toast maketext(this, "the user is no longer associated with their facebook account ", toast length long) show(); 4 log d("myapp", "the user is no longer associated with their facebook account "); 5 } else { 6 toast maketext(this, ex getmessage(), toast length long) show(); 7 } 8 });1 parsefacebookutils unlinkinbackground(parseuser getcurrentuser()) { 2 if (it == null) { 3 toast maketext(this,"the user is no longer associated with their facebook account ",toast length long) show() 4 log d("myapp", "the user is no longer associated with their facebook account ") 5 } else { 6 toast maketext(this, it message, toast length long) show() 7 } 8 } dans le projet d'exemple, ce code est placé à l'intérieur d'un dissociez votre compte de facebook dissociez votre compte de facebook rappel de bouton 7\ il est très important d'utiliser ce qui suit comme méthode en dehors de la oncreate() oncreate() méthode de votre loginactivity loginactivity pour passer les résultats de connexion au loginmanager via callbackmanager et éviter les erreurs 1 @override 2 protected void onactivityresult(int requestcode, int resultcode, intent data) { 3 super onactivityresult(requestcode, resultcode, data); 4 parsefacebookutils onactivityresult(requestcode, resultcode, data); 5 }1 override fun onactivityresult(requestcode int, resultcode int, data intent?) { 2 super onactivityresult(requestcode, resultcode, data) 3 parsefacebookutils onactivityresult(requestcode, resultcode, data) 4 } 7 se déconnecter pour implémenter la déconnexion de facebook, utilisez simplement le code mentionné ci dessous 1 final progressdialog dialog = new progressdialog(this); 2 dialog settitle("please, wait a moment "); 3 dialog setmessage("logging out "); 4 dialog show(); 5 loginmanager getinstance() logout(); 6 parseuser logoutinbackground(e > { 7 if (e == null) 8 showalert("so, you're going ", "ok bye bye then", true); 9 else 10 showalert("error ", e getmessage(), false); 11 });1 val dlg = progressdialog(this) 2 dlg settitle("please, wait a moment ") 3 dlg setmessage("logging out ") 4 dlg show() 5 loginmanager getinstance() logout() 6 parseuser logoutinbackground { e > 7 if (e == null) 8 showalert("so, you're going ", "ok bye bye then", true) 9 else 10 showalert("error ", e message, false) 11 } dans le projet exemple, ce code est placé à l'intérieur d'un bouton de déconnexion bouton de déconnexion rappel la méthode alertdisplayer alertdisplayer est la même que celle que vous avez ajoutée dans le loginactivity loginactivity , n'oubliez pas de changer ses arguments intent arguments intent cependant c'est fait ! à ce stade, vous pouvez vous connecter, vous inscrire et vous déconnecter de votre application avec facebook en utilisant les fonctionnalités de base de parse server via back4app !