Android
Users
Panduan Teknis Mengintegrasikan Login Facebook di Android
21 mnt
cara menambahkan login facebook ke aplikasi android anda pendahuluan dalam panduan ini, anda akan belajar cara login menggunakan facebook login dan parse user parse user kelas melalui back4app tutorial ini menggunakan aplikasi dasar yang dibuat di android studio 4 1 1 dengan buildtoolsversion=30 0 3 buildtoolsversion=30 0 3 , compile sdk version = 30 compile sdk version = 30 dan targetsdkversion 30 targetsdkversion 30 kapan saja, anda dapat mengakses proyek android lengkap yang dibangun dengan tutorial ini di repositori github kami https //github com/templates back4app/android parse sdk kotlin https //github com/templates back4app/android parse sdk java tujuan buat fitur login dengan facebook untuk aplikasi android anda menggunakan parse dan back4app prasyarat untuk menyelesaikan tutorial ini, kami membutuhkan https //developer android com/studio/index html sebuah aplikasi yang dibuat di back4app catatan ikuti https //www back4app com/docs/get started/new parse app untuk belajar cara membuat aplikasi parse di back4app sebuah aplikasi android yang terhubung ke back4app catatan ikuti https //www back4app com/docs/android/parse android sdk untuk membuat proyek android studio yang terhubung ke back4app sebuah perangkat (atau https //developer android com/studio/run/managing avds html ) yang menjalankan android 4 1 (jelly bean) atau yang lebih baru 1 pengaturan facebook untuk mulai menggunakan fungsi facebook, anda perlu kunjungi https //developers facebook com/ dan buat akun serta aplikasi ikuti panduan quickstart facebook dengan https //developers facebook com/docs/facebook login/android dan perhatikan rekomendasi berikut berikut adalah langkah langkah yang termasuk dalam panduan awal facebook, yang perlu anda ikuti dengan hati hati, karena anda tidak akan mengikutinya dengan tepat seperti yang disarankan oleh facebook pada langkah 3, alih alih menambahkan implementation 'com facebook android\ facebook login \[8 1)' di dependencies{} dependencies{} bagian di build gradle (module\ app) build gradle (module\ app) , tambahkan kode berikut di dependencies{} dependencies{} bagian di build gradle (module\ app) build gradle (module\ app) 1 // update the versions to the latest ones 2 implementation "com github parse community\ parsefacebookutils android\ latest version here" 3 implementation 'com facebook android\ facebook android sdk\ latest version here' ingat untuk memperbarui versi parse facebook utils sdk untuk android ke versi terbaru anda dapat mengetahui versi terbaru di https //jitpack io/ , mengikuti langkah langkah ini di situs jitpack, tempel parse community\ parsefacebookutils android parse community\ parsefacebookutils android di kotak url repositori git url repositori git setelah melakukan itu, klik pada lihat lihat tombol kemudian anda harus melihat versi parse sdk yang tersedia untuk android, seperti yang ditunjukkan pada gambar berikut pada langkah 4, anda akan diminta untuk menambahkan izin internet di aplikasi aplikasi elemen di /app/manifest/androidmanifest xml /app/manifest/androidmanifest xml file, tetapi anda sudah menambahkannya saat mengikuti https //www back4app com/docs/android/parse android sdk sehingga anda tidak perlu melakukan ini pada langkah 6, anda perlu menyediakan hash kunci, jadi anda harus memiliki https //www openssl org/ yang terinstal panduan facebook tidak menyediakan baris perintah untuk menghasilkan hash kunci di linux, tetapi melakukannya sangat sederhana, karena yang anda butuhkan hanyalah membuka jendela terminal dan menjalankan perintah berikut keytool exportcert alias androiddebugkey keystore / android/debug keystore | openssl sha1 binary | openssl base64 jangan ikuti langkah langkah dari panduan awal cepat facebook segera setelah langkah 6 https //en wikipedia org/wiki/sha 1 (algoritma hash aman) sha 1, yang disebut algoritma hash aman, adalah algoritma enkripsi yang paling umum sha 1, dirancang oleh badan keamanan nasional amerika serikat sidik jari sha 1 adalah kunci unik yang dihasilkan untuk pc anda yang dapat digunakan untuk penandatanganan ini terutama digunakan untuk pengiriman menggunakan beberapa api (seperti api facebook yang akan kita gunakan dalam panduan ini ) jika anda ingin mempelajari lebih lanjut, anda dapat mengunjungi halaman wikipedia sha 1 anda harus mengikuti langkah langkah lain yang dijelaskan dalam panduan cepat facebook dan tidak disebutkan di sini 2 hubungkan aplikasi facebook anda dengan back4app pergi ke dasbor aplikasi anda di https //www back4app com/ dan klik pada pengaturan server pengaturan server temukan blok “login facebook” dan klik pada pengaturan pengaturan blok “login facebook” terlihat seperti ini 3\ kita perlu menambahkan facebook id kita, yang kita dapatkan dari panduan facebook ke string xml (anda seharusnya telah mengikuti panduan facebook dan melakukan ini sebelumnya) pergi ke proyek android studio anda, buka file strings anda /app/src/main/res/values/strings xml /app/src/main/res/values/strings xml , salin facebook app id facebook app id anda dan tempelkan di facebook appid facebook appid kolom di halaman terakhir back4app yang anda buka terakhir, tekan tombol + + 3 tambahkan elemen penyedia di file manifest kembali ke proyek android studio anda dan di dalam elemen aplikasi aplikasi di /app/manifest/androidmanifest xml /app/manifest/androidmanifest xml file, tepat setelah elemen meta data meta data , tambahkan kode berikut 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" /> jangan lupa untuk menempatkan id aplikasi facebook anda di kode di atas 4 inisialisasi parse facebook util sdks dalam proyek android studio anda, di file java yang disebut app app yang memperluas application yang anda buat untuk menginisialisasi sdk parse, di oncreate oncreate metode, tepat setelah parse initialize() parse initialize() panggilan, gunakan kode berikut untuk menginisialisasi parse facebook utils sdk 1 parsefacebookutils initialize (this); jika anda tidak memiliki app java app java file seperti yang dijelaskan dalam langkah ini, akses https //www back4app com/docs/android/parse android sdk dan pastikan bahwa anda telah mengikuti semua langkah yang diperlukan untuk menginstal sdk parse dengan benar jika anda tidak menginstal sdk parse dengan benar, login facebook anda dengan parse tidak akan berfungsi 5 siapkan pada awal setiap aktivitas parse, impor yang berikut 1 import androidx appcompat app appcompatactivity ; 2 import android app alertdialog ; 3 import android app progressdialog ; 4 import android content intent ; 5 import android os bundle ; 6 import android widget button ; 7 import com facebook login loginmanager ; 8 import com parse parseuser ; 6 masuk untuk mengimplementasikan aktivitas masuk anda, lakukan yang berikut impor ke loginactivity loginactivity , selain dari ketergantungan yang diimpor di langkah 4 1 impor android app alertdialog ; 2 impor android app progressdialog ; 3 impor android content intent ; 4 impor android os bundle ; 5 impor android util log ; 6 impor android widget button ; 7 impor android widget toast ; 8 impor com facebook accesstoken ; 9 impor com facebook graphrequest ; 10 impor com parse parseuser ; 11 impor com parse facebook parsefacebookutils ; 12 impor org json jsonexception ; 13 impor java util arrays ; 14 impor java util collection ; 2\ untuk mengimplementasikan facebook login, cukup gunakan kode berikut 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 } dalam proyek contoh, kode ini ditempatkan di dalam callback tombol login via facebook login via facebook 3\ setelah login berhasil melalui facebook ke aplikasi kami, kami sekarang dapat mendapatkan beberapa informasi dasar pengguna yang telah login seperti yang anda lihat, ada banyak metode lain yang termasuk dalam kode di atas metode getuserdetailfromfb getuserdetailfromfb bertanggung jawab untuk mengambil detail pengguna berikut adalah kode untuk metode ini 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\ menarik untuk menambahkan metode untuk menampilkan dialog peringatan dan membuat proses terlihat lebih profesional dalam fungsi ini, kami juga mendapatkan parameter pengguna ketika pergi ke halaman mainactivity, kami mengirimkan parameter pengguna ini dalam intent, dan di mainactivity, kami menarik informasi dalam pengguna ini dan mencetaknya di layar metode di bawah ini melakukan ini 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\ jika anda ingin mengaitkan parseuser yang ada dengan akun facebook, anda dapat menghubungkannya seperti ini 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 } dalam proyek contoh, kode ini ditempatkan di dalam callback tombol tautkan akun anda ke facebook tautkan akun anda ke facebook 6\ jika anda ingin memutuskan tautan facebook dari pengguna, cukup lakukan ini 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 } dalam proyek contoh, kode ini ditempatkan di dalam callback tombol putuskan tautan akun anda dari facebook putuskan tautan akun anda dari facebook 7\ sangat penting untuk menggunakan yang berikut sebagai metode di luar oncreate() oncreate() metode dari loginactivity loginactivity anda untuk meneruskan hasil login ke loginmanager melalui callbackmanager dan menghindari kesalahan 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 keluar untuk mengimplementasikan facebook logout, cukup gunakan kode yang disebutkan di bawah ini 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 } dalam proyek contoh, kode ini ditempatkan di dalam callback tombol log out log out metode alertdisplayer alertdisplayer adalah sama dengan yang kamu tambahkan di loginactivity loginactivity , jangan lupa untuk mengubah argumen intent intent nya selesai! pada tahap ini, kamu dapat masuk, mendaftar, dan keluar dari aplikasi kamu dengan facebook menggunakan fitur inti parse server melalui back4app!