iOS
...
Users
Integrasi Login Facebook dengan ParseSwift di iOS
16 mnt
masuk dengan facebook pendahuluan dalam https //www back4app com/docs/ios/parse swift sdk/users/sign in with google , kita belajar bagaimana seorang pengguna masuk ke aplikasi back4app menggunakan akun google sebagai tindak lanjut, kita sekarang dapat menambahkan alternatif masuk yang menggunakan akun facebook sebagai gantinya untuk mencapai ini, kita pertama tama pergi ke halaman pengembang facebook dan mengatur persyaratan untuk mengintegrasikan fungsionalitas tersebut dalam proyek xcode facebook menyediakan sdk kepada pengembang untuk mengintegrasikan opsi masuk dengan facebook di antara berbagai aplikasi dalam https //github com/templates back4app/ios sign in with facebook , kami menyediakan template xcode sederhana di mana anda dapat menguji berbagai metode masuk yang kami terapkan contoh ini sudah diperkenalkan dalam https //www back4app com/docs/ios/parse swift sdk/users/user log in , anda dapat mengunjunginya kembali untuk informasi lebih lanjut tentang proyek tersebut prasyarat untuk menyelesaikan quickstart ini, anda perlu versi terbaru dari xcode sebuah aplikasi yang dibuat di back4app ikuti https //www back4app com/docs/get started/new parse app untuk belajar bagaimana cara membuat aplikasi parse di back4app catatan ikuti https //www back4app com/docs/ios/parse swift sdk untuk membuat proyek xcode yang terhubung ke back4app tujuan untuk mengintegrasikan fitur masuk pengguna menggunakan sdk facebook dan parseswift 1 menyiapkan sdk facebook setelah kita memiliki proyek xcode https //www back4app com/docs/ios/parse swift sdk/install sdk ke aplikasi back4app , kita melanjutkan untuk menambahkan sdk facebook yang akan memungkinkan kita untuk menerapkan alur masuk untuk contoh ini, kita menggunakan swift package manager (spm) untuk menambahkan ketergantungan login facebook di proyek xcode, pergi ke file>add packages… dan di bilah pencarian, cari https //github com/facebook/facebook ios sdk setelah facebook ios sdk muncul di hasil, klik pada tombol tambahkan paket selanjutnya, pergi ke https //developers facebook com/apps/ bagian dari akun pengembang facebook anda dan buat aplikasi baru masukkan jenis aplikasi yang anda miliki dan lanjutkan ke halaman berikutnya masukkan informasi yang tersisa dan klik buat aplikasi saat anda berada di https //developers facebook com/apps/ halaman, temukan aplikasi baru yang anda buat, salin id aplikasi dan masuk ke dasbor dengan mengklik namanya di kanan atas, terdapat id klien yang terkait dengan akun pengembang facebook anda kedua id ini diperlukan untuk konfigurasi berikut konfigurasi berikutnya yang perlu diatur facebook untuk kemampuan masuk adalah memasukkan beberapa data kunci nilai di file xcode info plist anda lebih tepatnya, pergi ke xcode navigator proyek anda, temukan info plist dan buka sebagai kode sumber tambahkan nilai berikut 1 cfbundleurltypes 2 3 4 cfbundletyperole 5 editor 6 cfbundleurlschemes 7 	 8 fbapp id 9 10 11 12 facebookappid 13 app id 14 facebookclienttoken 15 client token 16 lsapplicationqueriesschemes 17 18 fbapi 19 fb messenger share api 20 ganti string app id dengan app id yang terkait dengan aplikasi yang baru dibuat di facebook string client token harus diganti dengan token klien yang terletak di dashboard>settings>advanced>security>client token sekarang kita harus menambahkan kemampuan keychain sharing ke proyek xcode untuk melakukan ini, pilih proyek anda dari navigator proyek dan pergi ke bagian target pilih target dan pergi ke tab signing & capabilities , lalu klik tombol + capability dan tambahkan kemampuan keychain sharing di dalam appdelegate , kami menambahkan baris berikut dalam metode delegate application( didfinishlaunchingwithoptions ) (pastikan anda mengimpor facebookcore framework terlebih dahulu) 1 import facebookcore 2 3 @main 4 class appdelegate uiresponder, uiapplicationdelegate { 5 func application( application uiapplication, didfinishlaunchingwithoptions launchoptions \[uiapplication launchoptionskey any]?) > bool { 6 7 8 applicationdelegate shared application(application, didfinishlaunchingwithoptions launchoptions) 9 return true 10 } 11 12 13 } terakhir, di scenedelegate , kami menambahkan kode berikut untuk menangani konteks url yang masuk 1 import facebookcore 2 3 class scenedelegate uiresponder, uiwindowscenedelegate { 4 5 6 func scene( scene uiscene, openurlcontexts urlcontexts set\<uiopenurlcontext>) { 7 guard let url = urlcontexts first? url else { 8 return 9 } 10 11 applicationdelegate shared application( 12 uiapplication shared, 13 open url, 14 sourceapplication nil, 15 annotation \[uiapplication openurloptionskey annotation] 16 ) 17 } 18 } 2 menggunakan facebook login dengan parseswift dengan facebooklogin berhasil diintegrasikan ke dalam proyek xcode anda, kami melanjutkan untuk mengimplementasikan fitur masuk dengan facebook di dalam https //github com/templates back4app/ios sign in with facebook , logincontroller bertanggung jawab untuk menangani dan menampilkan berbagai opsi masuk kami kemudian menyiapkan aksi signinwithfacebookbutton 1 // logincontroller swift file 2 import facebooklogin 3 4 5 class logincontroller uiviewcontroller { 6 7 8 private let signinwithfacebookbutton uibutton = { 9 let button = uibutton(type system) 10 button setimage(uiimage(named "facebookicon"), for normal) 11 button imageview? contentmode = scaleaspectfit 12 return button 13 }() 14 15 override func viewdidload() { 16 super viewdidload() 17 // 18 // layout configuration 19 // 20 21 signinwithfacebookbutton addtarget(self, action #selector(handlesigninwithfacebook), for touchupinside) 22 } 23 } 24 25 // mark sign in with facebook section 26 extension logincontroller { 27 @objc fileprivate func handlesigninwithfacebook() { 28 // todo here we will implement the sign in procedure 29 } 30 } untuk menampilkan formulir masuk dari facebook, sdk facebooklogin memungkinkan kita untuk mengatur dan menyajikannya melalui signin(with\ presenting\ callback) metode dari kelas loginmanager kita harus mengirimkan array yang berisi nilai string yang terkait dengan data yang ingin kita kumpulkan dari facebook nilai umum adalah public profile dan email di sisi lain, parameter kedua adalah closure callback di mana facebook mengembalikan kredensial pengguna (tertanam dalam objek loginmanagerloginresult ) atau kesalahan jika otentikasi gagal 1 // mark sign in with facebook section 2 extension logincontroller { 3 @objc fileprivate func handlesigninwithfacebook() { 4 let loginmanager = loginmanager() 5 6 // method provided by the facebook sdk see https //developers facebook com/docs/facebook login/ios/ for more details 7 loginmanager login(permissions \["public profile", "email"], from self) { \[weak self] result, error in 8 if let error = error { 9 self? showmessage(title "error", message error localizeddescription) 10 return 11 } else if let result = result, result iscancelled { 12 self? showmessage(title "alert", message "sign in cancelled") 13 return 14 } 15 16 // once facebook successfully signs in the user, we retrieve the information related to the sign in process via the result token object, an accesstoken class type 17 guard let accesstoken = result? token else { fatalerror("this dhould never hapen ") } 18 19 // todo sign in the user on your back4app application with the accesstoken 20 } 21 } 22 } kami kemudian mengambil kredensial ini dan menggunakannya untuk pengguna masuk ke back4app platform objek yang mewakili pengguna adalah struct berikut (lihat https //www back4app com/docs/ios/parse swift sdk/users/user log in untuk detail lebih lanjut) 1 import parseswift 2 3 struct user parseuser { 4 5 6 var username string? 7 var email string? 8 var emailverified bool? 9 var password string? 10 11 var age int? 12 } oleh karena itu, kredensial yang dikembalikan oleh facebook berisi accesstoken dan id pengguna yang akan digunakan untuk menyelesaikan proses masuk lebih tepatnya, kita menginstansiasi objek parsefacebook\<user> dan memanggil metode login(userid\ authenticationtoken\ completion ) 1 // mark sign in with facebook section 2 extension logincontroller { 3 @objc fileprivate func handlesigninwithfacebook() { 4 let loginmanager = loginmanager() 5 6 // method provided by the facebook sdk see https //developers facebook com/docs/facebook login/ios/ for more details 7 loginmanager login(permissions \["public profile", "email"], from self) { \[weak self] result, error in 8 if let error = error { 9 self? showmessage(title "error", message error localizeddescription) 10 return 11 } else if let result = result, result iscancelled { 12 self? showmessage(title "alert", message "sign in cancelled") 13 return 14 } 15 16 // once facebook successfully signed in the user, we retrieve the information related to the sign in process via the result token object, an accesstoken class type 17 guard let accesstoken = result? token else { fatalerror("this dhould never hapen ") } 18 19 // with the accesstoken returned by facebook, you need to sign in the user on your back4app application 20 user facebook login(userid accesstoken userid, accesstoken accesstoken tokenstring) { \[weak self] result in 21 // returns the user object asociated to the facebook user returned by facebook 22 switch result { 23 case success(let user) 24 // after the login succeeded, we send the user to the home screen 25 // additionally, you can complete the user information with the data provided by facebook 26 let homecontroller = homecontroller() 27 homecontroller user = user 28 29 self? navigationcontroller? pushviewcontroller(homecontroller, animated true) 30 case failure(let error) 31 // handle the error if the login process failed 32 self? showmessage(title "failed to sign in", message error message) 33 } 34 } 35 } 36 } 37 } 3 memverifikasi masuk pengguna dan pembuatan sesi untuk memastikan bahwa masuk google berhasil, anda dapat melihat dasbor aplikasi back4app anda dan melihat pengguna baru yang berisi parameter authdata facebook anda juga dapat memverifikasi bahwa sesi yang valid telah dibuat di dasbor, yang berisi pointer ke objek user yang sesuai 4 menghubungkan pengguna yang ada ke akun facebook jika aplikasi ios anda memerlukan anda untuk mengaitkan akun facebook dengan pengguna yang ada di platform back4app , objek parsefacebook\<user> mengimplementasikan metode link(id\ accesstoken\ completion ) di mana anda mengirimkan userid dari akun facebook dan accesstoken yang terkait dengan sesi tersebut 1 let facebookuserid string // the userid of the facebook account to link to 2 let accesstoken string = accesstoken current! tokenstring // the access token of the currently signed in facebook user 3 4 user facebook link(userid facebookuserid, accesstoken accesstoken) { result in 5 switch result { 6 case success(let user) 7 // linking succeeded, the user is now linked to the corresponding facebook account 8 case failure(let error) 9 // linking failed, handle the error 10 } 11 } 5 keluar proses keluar tidak berbeda dari cara standar memanggil metode user signout() (yang dijelaskan dalam panduan sebelumnya) namun, ketika pengguna masuk dengan akun facebook, untuk konsistensi, anda juga harus mengeluarkan pengguna facebook saat ini kita dapat melakukan ini dengan memanggil metode berikut bersamaan dengan user signout() 1 loginmanager () logout () untuk memverifikasi apakah pengguna saat ini memiliki akun facebook yang terhubung, anda dapat memeriksanya dengan melihat pada kamus user current? authdata 6 jalankan aplikasi anda dapat pergi ke https //github com/templates back4app/ios sign in with facebook ini dan mengunduh proyek contoh sebelum menjalankan proyek, pastikan anda mengatur profil penyedia dengan yang terkait dengan akun pengembang anda kesimpulan di akhir panduan ini, anda telah belajar bagaimana cara masuk atau mengaitkan pengguna back4app yang ada di ios menggunakan masuk dengan facebook di panduan berikutnya, kita akan melanjutkan dengan metode masuk yang berbeda