iOS
...
Users
Google-Authentifizierung in iOS mit ParseSwift integrieren
12 min
mit google anmelden einführung heutzutage ist es üblich, dass anwendungen mehr als eine art von anmeldemethode anbieten daher ist es für benutzer einfacher, sich mit einem konto anzumelden, das sie bereits haben, wie z b einem google konto oder einer apple id darüber hinaus stellen soziale netzwerke (wie facebook) ein sdk für entwickler zur verfügung, um eine anmeldemöglichkeit mit ihren sozialen netzwerk anmeldeinformationen zu integrieren wir beginnen diesen leitfaden, indem wir zunächst die anmeldefunktion integrieren, die von google bereitgestellt wird nachdem der benutzer sich erfolgreich mit seinen google anmeldeinformationen angemeldet hat, verwenden wir die von google zurückgegebenen kontoinformationen, um einen neuen benutzer anzumelden, der mit dem entsprechenden google konto verknüpft ist in diesem repository , bieten wir eine einfache xcode vorlage an, in der sie die verschiedenen anmeldemethoden testen können, die wir implementieren dieses projekt wurde bereits in dem vorherigen leitfaden https //www back4app com/docs/ios/parse swift sdk/users/user log in , den sie für weitere details zum projekt erneut besuchen können voraussetzungen um dieses schnellstartprojekt abzuschließen, benötigen sie 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 google und parseswift zu integrieren 1 einrichtung des google sdk sobald wir das xcode projekt verknüpft mit der back4app anwendung haben, fügen wir das google sdk hinzu, das es uns ermöglicht, den anmeldefluss zu implementieren in diesem beispiel verwenden wir den swift package manager (spm), um die abhängigkeiten für google sign in hinzuzufügen gehen sie im xcode projekt zu datei>pakete hinzufügen… und suchen sie in der suchleiste nach https //github com/google/googlesignin ios sobald die googlesignin ios option in den ergebnissen erscheint, klicken sie auf die add package schaltfläche als nächstes gehen sie zum dashboard ihres google entwicklerkontos und erstellen sie ein neues projekt sobald das projekt erstellt wurde, besteht der nächste schritt darin, eine oauth client id zu erstellen wählen sie im google cloud console ihr neues projekt aus und gehen sie zur seite mit den anmeldeinformationen diese finden sie im linken menü während dieses prozesses müssen sie möglicherweise den oauth zustimmungsbildschirm einrichten, der im anmeldeformular mit google angezeigt wird, und die entsprechenden anforderungen entsprechend ausfüllen um diesen schritt abzuschließen, müssen wir in den url schemata der app die während der erstellung der oauth client id generierte url hinzufügen gehen sie zur projektkonfiguration und wählen sie das haupt app ziel aus gehen sie dann zum info abschnitt und fügen sie das entsprechende url schema aus ihrem google projekt hinzu 2 verwendung von google anmeldung mit parseswift mit googlesignin erfolgreich in ihr xcode projekt integriert, fahren wir fort, die anmeldung mit google funktion zu implementieren im projektbeispiel , ist der logincontroller dafür verantwortlich, die verschiedenen anmeldeoptionen zu verwalten und anzuzeigen wir richten dann die signinwithapplebutton aktion in diesem controller ein 1 // logincontroller swift file 2 import googlesignin 3 4 5 class logincontroller uiviewcontroller { 6 7 8 private let signinwithgooglebutton uibutton = { 9 let button = uibutton(type system) 10 button setimage(uiimage(named "googleicon"), 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 signinwithgooglebutton addtarget(self, action #selector(handlesigninwithgoogle), for touchupinside) 22 } 23 } 24 25 // mark sign in with google section 26 extension logincontroller { 27 @objc fileprivate func handlesigninwithgoogle() { 28 // todo here we will implement the sign in procedure 29 } 30 } um das anmeldeformular von google anzuzeigen, ermöglicht uns das googlesignin googlesignin sdk, es über die signin(with\ presenting\ callback) signin(with\ presenting\ callback) methode der gidsignin gidsignin klasse einzurichten und anzuzeigen darüber hinaus müssen wir ein gidconfiguration gidconfiguration objekt über die client id erstellen, die im vorherigen schritt erstellt wurde, dann den präsentierenden view controller und einen callback closure übergeben im callback closure gibt google die benutzeranmeldeinformationen (eingebettet in ein gidgoogleuser gidgoogleuser objekt) oder einen fehler zurück, wenn die authentifizierung fehlgeschlagen ist 1 // mark sign in with google section 2 extension logincontroller { 3 @objc fileprivate func handlesigninwithgoogle() { 4 let signinconfig = gidconfiguration(clientid "my client id") // see https //developers google com/identity/sign in/ios/sign in for more details 5 6 // method provided by the googlesignin framework see https //developers google com/identity/sign in/ios/sign in for more details 7 gidsignin sharedinstance signin(with signinconfig, presenting self) { \[weak self] googleuser, error in 8 if let error = error { 9 self? showmessage(title "error", message error localizeddescription) 10 return 11 } 12 13 // after google returns a successful sign in, we get the users id and idtoken 14 guard let googleuser = googleuser, 15 let userid = googleuser userid, 16 let idtoken = googleuser authentication idtoken 17 else { fatalerror("this should never happen!?") } 18 19 // todo sign in the user in your back4app application 20 } 21 } 22 } wir nehmen dann diese anmeldeinformationen und verwenden sie, um den benutzer auf der back4app plattform anzumelden das objekt, das den benutzer darstellt, ist die folgende struktur (siehe die vorherige anleitung 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 google zurückgegebene credential ein idtoken idtoken und die id id des benutzers, die verwendet werden, um den anmeldeprozess abzuschließen genauer gesagt, instanziieren wir ein parsegoogle\<user> parsegoogle\<user> objekt und rufen die login(id\ idtoken\ completion) login(id\ idtoken\ completion) methode auf 1 // mark sign in with google section 2 extension logincontroller { 3 @objc fileprivate func handlesigninwithgoogle() { 4 gidsignin sharedinstance signout() // this should be called when the user logs out from your app for login testing purposes, we are calling it each time the user taps on the 'signinwithgooglebutton' button 5 6 let signinconfig = gidconfiguration(clientid "my client id") // see https //developers google com/identity/sign in/ios/sign in for more details 7 8 // method provided by the googlesignin framework see https //developers google com/identity/sign in/ios/sign in for more details 9 gidsignin sharedinstance signin(with signinconfig, presenting self) { \[weak self] googleuser, error in 10 if let error = error { 11 self? showmessage(title "error", message error localizeddescription) 12 return 13 } 14 15 // after google returns a successful sign in, we get the users id and idtoken 16 guard let googleuser = googleuser, 17 let userid = googleuser userid, 18 let idtoken = googleuser authentication idtoken 19 else { fatalerror("this should never happen!?") } 20 21 // with the user information returned by google, you need to sign in the user on your back4app application 22 user google login(id userid, idtoken idtoken) { result in 23 // returns the user object asociated to the gidgoogleuser object returned by google 24 switch result { 25 case success(let user) 26 // after the login succeeded, we send the user to the home screen 27 // additionally, you can complete the user information with the data provided by google 28 let homecontroller = homecontroller() 29 homecontroller user = user 30 31 self? navigationcontroller? pushviewcontroller(homecontroller, animated true) 32 case failure(let error) 33 // handle the error if the login process failed 34 self? showmessage(title "failed to sign in", message error message) 35 } 36 } 37 } 38 } 39 } 3 überprüfung der benutzeranmeldung und erstellung der sitzung um sicherzustellen, dass die google anmeldung funktioniert hat, können sie ihr back4app anwendungs dashboard aufrufen und den neuen benutzer benutzer , der die google authdata authdata parameter enthält sie können auch überprüfen, ob eine gültige sitzung im dashboard erstellt wurde, die einen verweis auf das entsprechende benutzer benutzer objekt enthält 4 verknüpfung eines bestehenden benutzers mit einem google konto falls ihre ios app erfordert, dass sie ein google konto mit einem bestehenden benutzer in ihrer back4app plattform verknüpfen, implementiert das parsegoogle\<user> parsegoogle\<user> objekt die methode link(id\ completion ) link(id\ completion ) , bei der sie die id id des zu verknüpfenden google kontos übergeben 1 let googleuserid string // the id of the google account to link to 2 3 user google link(id googleuserid) { \[weak self] result in 4 switch result { 5 case success(let user) 6 // linking succeeded, user object now is linked to the corresponding google account 7 case failure(let error) 8 // linking failed, handle the error 9 } 10 } 5 abmelden der abmeldevorgang unterscheidet sich nicht von der standardmethode zum aufrufen der user signout() user signout() methode (detailliert in vorherigen anleitungen) wenn sich ein benutzer jedoch mit einem google konto anmeldet, sollten sie zur konsistenz auch den aktuellen google benutzer abmelden dies können wir erreichen, indem wir die folgende methode zusammen mit user signout() user signout() aufrufen um zu überprüfen, ob der aktuelle benutzer ein verknüpftes google konto hat, können sie dies überprüfen, indem sie das user current? authdata user current? authdata dictionary ansehen 6 app ausführen sie können dieses repository besuchen 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 google anmelden im nächsten leitfaden werden wir mit einer anderen anmeldemethode fortfahren