iOS
...
Users
Facebook Login Integration in Xcode mit ParseSwift
16 min
mit facebook anmelden einführung in der vorherigen anleitung https //www back4app com/docs/ios/parse swift sdk/users/sign in with google , haben wir gelernt, wie sich ein benutzer mit einem back4app konto anmeldet als folge können wir jetzt eine anmeldemöglichkeit hinzufügen, die stattdessen ein facebook konto verwendet um dies zu erreichen, gehen wir zuerst zur entwicklerseite von facebook und richten die anforderungen ein, um eine solche funktionalität in einem xcode projekt zu integrieren facebook stellt entwicklern ein sdk zur verfügung, um eine anmeldung mit facebook option in verschiedenen apps zu integrieren in diesem repository , bieten wir eine einfache xcode vorlage an, in der sie die verschiedenen anmeldemethoden testen können, die wir implementieren dieses beispiel wurde bereits in der anleitung zur anmeldung https //www back4app com/docs/ios/parse swift sdk/users/user log in , sie können es für weitere details zum projekt erneut besuchen voraussetzungen um dieses schnellstartprojekt abzuschließen, benötigen sie eine aktuelle version von xcode eine app, die bei back4app erstellt wurde befolgen sie das tutorial für neue parse apps um zu lernen, wie man eine parse app bei back4app erstellt hinweis befolgen sie das tutorial zur installation des parse sdk (swift) um ein xcode projekt zu erstellen, das mit back4app verbunden ist ziel um eine benutzeranmeldefunktion mit dem sdk von facebook zu integrieren und parseswift 1 einrichtung des sdk von facebook sobald wir das xcode projekt verknüpft mit der back4app anwendung haben, fügen wir das sdk von facebook hinzu, das es uns ermöglicht, den anmeldefluss zu implementieren für dieses beispiel verwenden wir den swift package manager (spm), um die abhängigkeiten für facebook login hinzuzufügen gehen sie im xcode projekt zu datei>pakete hinzufügen… und suchen sie in der suchleiste nach https //github com/facebook/facebook ios sdk https //github com/facebook/facebook ios sdk sobald das facebook ios sdk in den ergebnissen erscheint, klicken sie auf die paket hinzufügen schaltfläche gehe als nächstes zum apps bereich deines facebook entwicklerkontos und erstelle eine neue app gib den typ der app an, zu dem deine app gehört, und gehe zur nächsten seite gib die restlichen informationen ein und klicke auf app erstellen während du auf deiner apps seite bist, suche deine neu erstellte app, kopiere ihre app id und gehe zum dashboard, indem du auf ihren namen klickst oben rechts befindet sich die client id , die mit deinem facebook entwicklerkonto verbunden ist diese beiden ids sind für die folgende konfiguration erforderlich die nächste konfiguration, die facebook benötigt, um die anmeldefunktion einzurichten, besteht darin, ein paar schlüssel wert daten in deiner xcode info plist datei einzugeben genauer gesagt, gehe zu deinem xcode projekt navigator, suche die info plist und öffne sie als quellcode füge die folgenden werte hinzu 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 ersetzen sie die app id zeichenfolge mit der app id , die mit der neu erstellten app auf facebook verbunden ist die client token zeichenfolge muss durch das client token ersetzt werden, das sich in dashboard>settings>advanced>security>client token jetzt müssen wir die keychain sharing funktionalität zum xcode projekt hinzufügen wählen sie dazu ihr projekt im projekt navigator aus und gehen sie zum abschnitt ziele wählen sie ein ziel aus und gehen sie zum signing & capabilities tab, klicken sie dann auf die + capability schaltfläche und fügen sie die keychain sharing funktionalität hinzu in der appdelegate , fügen wir die folgende zeile in die methode application( didfinishlaunchingwithoptions ) des delegaten ein (stellen sie sicher, dass sie zuerst das facebookcore framework importieren) 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 } zuletzt fügen wir im scenedelegate , den folgenden code hinzu, um eingehende url kontexte zu verarbeiten 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 verwendung von facebook login mit parseswift nachdem facebooklogin erfolgreich in ihr xcode projekt integriert wurde, fahren wir fort, die funktion zum anmelden mit facebook zu implementieren im der projektbeispiel , ist der logincontroller dafür verantwortlich, die verschiedenen anmeldeoptionen zu verwalten und anzuzeigen dann richten wir die aktion signinwithfacebookbutton ein 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 } um das anmeldeformular von facebook anzuzeigen, ermöglicht uns das facebooklogin sdk, es über die signin(with\ presenting\ callback) methode der loginmanager klasse einzurichten und anzuzeigen wir müssen ein array übergeben, das string werte enthält, die mit den daten verbunden sind, die wir von facebook sammeln möchten die gängigen werte sind public profile und email }]},{ andererseits ist der zweite parameter ein callback closure, in dem facebook die benutzeranmeldeinformationen (eingebettet in ein loginmanagerloginresult objekt) oder einen fehler zurückgibt, wenn die authentifizierung fehlschlägt 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 } wir nehmen dann diese anmeldeinformationen und verwenden sie, damit der benutzer sich bei der back4app plattform anmeldet das objekt, das den benutzer darstellt, ist die folgende struktur (siehe die anleitung zur anmeldung https //www back4app com/docs/ios/parse swift sdk/users/user log in für weitere details) 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 } daher enthält das von facebook zurückgegebene credential ein accesstoken und die benutzer id, die verwendet werden, um den anmeldeprozess abzuschließen genauer gesagt, instanziieren wir ein parsefacebook\<user> objekt und rufen die methode login(userid\ authenticationtoken\ completion ) auf 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 überprüfung der benutzeranmeldung und erstellung der sitzung um sicherzustellen, dass die google anmeldung funktioniert hat, können sie ihr back4app anwendungs dashboard ansehen und den neuen benutzer mit den facebook authdata parametern sehen sie können auch überprüfen, ob eine gültige sitzung im dashboard erstellt wurde, die einen verweis auf das entsprechende benutzerobjekt enthält 4 verknüpfung eines bestehenden benutzers mit einem facebook konto falls ihre ios app erfordert, dass sie ein facebook konto mit einem bestehenden benutzer in ihrer back4app plattform verknüpfen, implementiert das parsefacebook\<user> objekt die methode link(id\ accesstoken\ completion ) , bei der sie die userid des facebook kontos und das accesstoken übergeben, das mit der sitzung verbunden ist 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 abmelden der abmeldevorgang unterscheidet sich nicht von der standardmethode zum aufrufen der user signout() methode (detailliert in vorherigen anleitungen) wenn sich jedoch ein benutzer mit einem facebook konto anmeldet, müssen sie zur konsistenz auch den aktuellen facebook benutzer abmelden dies können wir erreichen, indem wir die folgende methode zusammen mit user signout() aufrufen um zu überprüfen, ob der aktuelle benutzer ein verknüpftes facebook konto hat, können sie dies tun, indem sie das user current? authdata dictionary überprüfen 6 app ausführen sie können zu diesem repository gehen und das beispielprojekt herunterladen stellen sie vor dem ausführen des projekts sicher, dass sie die bereitstellungsprofile mit denjenigen verknüpfen, die mit ihrem entwicklerkonto verbunden sind fazit am ende dieses leitfadens haben sie gelernt, wie sie sich anmelden oder bestehende back4app benutzer auf ios mit facebook anmelden im nächsten leitfaden werden wir mit einer anderen anmeldemethode fortfahren