Platform
Daftar Dengan Apple
15 mnt
tutorial masuk dengan apple pendahuluan masuk dengan apple memungkinkan pengguna untuk masuk ke aplikasi menggunakan apple id mereka fitur ini tersedia di ios 13 dan yang lebih baru, serta parse 3 5 dan yang lebih baru prasyarat untuk menyelesaikan tutorial ini, anda akan memerlukan sebuah aplikasi yang dibuat di back4app lihat tutorial membuat aplikasi baru untuk belajar cara membuat aplikasi di back4app siapkan subdomain untuk aplikasi back4app anda lihat mengaktifkan hosting web dan live query untuk belajar cara membuat subdomain di back4app sebuah akun pengembang apple 1 buat aplikasi baru di back4app pertama tama, perlu dipastikan bahwa anda memiliki aplikasi yang sudah ada di back4app namun, jika anda adalah pengguna baru, anda dapat memeriksa tutorial ini https //www back4app com/docs/get started/new parse app untuk belajar cara membuatnya 2 tambahkan kemampuan masuk dengan apple ke proyek xcode anda di proyek xcode anda, klik pada target (1) dan pergi ke tab signing & capabilities (2) klik tombol + kemampuan + kemampuan (3) dan tambahkan masuk dengan apple masuk dengan apple kemampuan (4) sementara di sana, pilih identifikasi bundle identifikasi bundle (5) dan simpan informasi itu karena kita akan membutuhkannya nanti 3 buat id layanan baru masuk ke akun pengembang apple https //developer apple com/ anda dan pergi ke bagian identifikasi identifikasi periksa apakah identifikasi bundle identifikasi bundle yang anda buat ada di sana klik identifikasi bundle identifikasi bundle dan gulir ke bawah periksa apakah masuk dengan apple masuk dengan apple dipilih klik edit edit dan pastikan aktifkan sebagai id aplikasi utama aktifkan sebagai id aplikasi utama dipilih jika semuanya benar, simpan dan keluar 4 siapkan parse auth untuk apple kunjungi situs web back4app, masuk, dan kemudian temukan aplikasi anda setelah itu, klik pengaturan server pengaturan server cari login apple login apple blok, dan pilih pengaturan pengaturan bagian login apple login apple terlihat seperti ini sekarang, anda hanya perlu menempelkan bundle id bundle id anda di kolom di bawah ini dan klik tombol untuk menyimpan jika anda mengalami kesulitan saat mengintegrasikan apple login, silakan hubungi tim kami melalui chat! 5 opsi 1 unduh template kami ada beberapa pengkodean yang terlibat dalam membuat masuk dengan apple berfungsi, jadi kami membuat template ini https //github com/templates back4app/parsesigninwithapple yang dapat anda unduh, dan ubah bundle identifier bundle identifier , app id app id , dan client key client key kode ini sepenuhnya didokumentasikan sehingga merupakan titik awal yang baik jika anda lebih suka membaca dokumen ini, silakan lanjut ke langkah berikutnya 6 opsi 2 tulis kode secara manual di dalam tampilan anda, tambahkan kerangka kerja authenticationservices dan buat authdelegate yang akan menangani pfuserauthenticationdelegate 1 import authenticationservices 2 3 class authdelegate\ nsobject, pfuserauthenticationdelegate { 4 func restoreauthentication(withauthdata authdata \[string string]?) > bool { 5 return true 6 } 7 8 func restoreauthenticationwithauthdata(authdata \[string string]?) > bool { 9 return true 10 } 11 } 7 implementasikan delegasi anda untuk viewcontroller implementasikan asauthorizationcontrollerdelegate dan asauthorizationcontrollerpresentationcontextproviding untuk viewcontroller 1 class viewcontroller uiviewcontroller, asauthorizationcontrollerdelegate, asauthorizationcontrollerpresentationcontextproviding 8 tambahkan tombol masuk dengan apple viewdidappear adalah tempat yang baik untuk itu jika anda memilih tempat lain, ingatlah untuk memanggilnya hanya sekali 1 override func viewdidappear( animated bool) { 2 super viewdidappear(animated) 3 4 // sign in with apple button 5 let signinwithapplebutton = asauthorizationappleidbutton() 6 7 // set this so the button will use auto layout constraint 8 signinwithapplebutton translatesautoresizingmaskintoconstraints = false 9 10 // add the button to the view controller root view 11 self view\ addsubview(signinwithapplebutton) 12 13 // set constraint 14 nslayoutconstraint activate(\[ 15 signinwithapplebutton leadinganchor constraint(equalto view\ safearealayoutguide leadinganchor, constant 50 0), 16 signinwithapplebutton trailinganchor constraint(equalto view\ safearealayoutguide trailinganchor, constant 50 0), 17 signinwithapplebutton bottomanchor constraint(equalto view\ safearealayoutguide bottomanchor, constant 70 0), 18 signinwithapplebutton heightanchor constraint(equaltoconstant 50 0) 19 ]) 20 21 // the function that will be executed when user tap the button 22 signinwithapplebutton addtarget(self, action #selector(applesignintapped), for touchupinside) 23 } applesignintapped di baris terakhir juga harus didefinisikan di dalam kelas viewcontroller 1 // this is the function that will be executed when user taps the button 2 @objc func applesignintapped() { 3 let provider = asauthorizationappleidprovider() 4 let request = provider createrequest() 5 // request full name and email from the user's apple id 6 request requestedscopes = \[ fullname, email] 7 8 // pass the request to the initializer of the controller 9 let authcontroller = asauthorizationcontroller(authorizationrequests \[request]) 10 11 // similar to delegate, this will ask the view controller 12 // which window to present the asauthorizationcontroller 13 authcontroller presentationcontextprovider = self 14 15 // delegate functions will be called when user data is 16 // successfully retrieved or error occured 17 authcontroller delegate = self 18 19 // show the sign in with apple dialog 20 authcontroller performrequests() 21 } 9 presentationcontextprovider provider konteks presentasi (asauthorizationcontrollerpresentationcontextproviding) akan meminta jendela mana yang harus menampilkan dialog otorisasi karena kita akan menampilkannya di jendela yang sama, kita harus mengembalikan self view\ window 1 func presentationanchor(for controller asauthorizationcontroller) > aspresentationanchor { 2 // return the current view window 3 return self view\ window! 4 } 10 menangani delegate asauthorizationcontrollerdelegate ada beberapa opsi yang harus kita tangani ketika delegate dipanggil, jadi mari kita tambahkan beberapa kode untuk menangani opsi tersebut secara berbeda 1 func authorizationcontroller(controller asauthorizationcontroller, didcompletewitherror error error) { 2 print("authorization error") 3 guard let error = error as? asauthorizationerror else { 4 return 5 } 6 7 switch error code { 8 case canceled 9 // user press "cancel" during the login prompt 10 print("canceled") 11 case unknown 12 // user didn't login their apple id on the device 13 print("unknown") 14 case invalidresponse 15 // invalid response received from the login 16 print("invalid respone") 17 case nothandled 18 // authorization request not handled, maybe internet failure during login 19 print("not handled") 20 case failed 21 // authorization failed 22 print("failed") 23 @unknown default 24 print("default") 25 } 26 } 11 menangani delegate untuk didcompletewithauthorization ketika kita berhasil mengautentikasi, kita dapat mengambil informasi yang diotorisasi 1 func authorizationcontroller(controller asauthorizationcontroller, didcompletewithauthorization authorization asauthorization) { 2 3 if let appleidcredential = authorization credential as? asauthorizationappleidcredential { 4 // unique id for each user, this uniqueid will always be returned 5 let userid = appleidcredential user 6 print("userid " + userid) 7 8 // if needed, save it to user defaults by uncommenting the line below 9 //userdefaults standard set(appleidcredential user, forkey "userid") 10 11 // optional, might be nil 12 let email = appleidcredential email 13 print("email " + (email ?? "no email") ) 14 15 // optional, might be nil 16 let givenname = appleidcredential fullname? givenname 17 print("given name " + (givenname ?? "no given name") ) 18 19 // optional, might be nil 20 let familyname = appleidcredential fullname? familyname 21 print("family name " + (familyname ?? "no family name") ) 22 23 // optional, might be nil 24 let nickname = appleidcredential fullname? nickname 25 print("nick name " + (nickname ?? "no nick name") ) 26 / 27 useful for server side, the app can send identitytoken and authorizationcode 28 to the server for verification purpose 29 / 30 var identitytoken string? 31 if let token = appleidcredential identitytoken { 32 identitytoken = string(bytes token, encoding utf8) 33 print("identity token " + (identitytoken ?? "no identity token")) 34 } 35 36 var authorizationcode string? 37 if let code = appleidcredential authorizationcode { 38 authorizationcode = string(bytes code, encoding utf8) 39 print("authorization code " + (authorizationcode ?? "no auth code") ) 40 } 41 42 // do what you want with the data here 43 44 } 45 } itu adalah tempat di mana kita juga dapat menambahkan kode untuk masuk ke parse jadi tepat setelah lakukan apa yang anda inginkan dengan data di sini lakukan apa yang anda inginkan dengan data di sini komentar, mari kita tambahkan 1 pfuser loginwithauthtype(inbackground "apple", authdata \["token" string(identitytoken!), "id" userid]) continuewith { task > any? in 2 if ((task error) != nil){ 3 //dispatchqueue main async { 4 print("could not login \nplease try again ") 5 print("error with parse login after siwa \\(task error! localizeddescription)") 6 //} 7 return task 8 } 9 print("successfuly signed in with apple") 10 return nil 11 } dan tentu saja, tambahkan kerangka parse 1 import parse