iOS
...
Users
Интеграция Google Sign-In с ParseSwift для iOS разработчиков
12 мин
вход с помощью google введение в настоящее время для приложений является обычным делом предлагать более одного типа метода входа поэтому пользователям проще войти с помощью учетной записи, которая у них уже есть, такой как учетная запись google или apple id более того, социальные сети (такие как facebook) предоставляют sdk для разработчиков, чтобы интегрировать опцию входа с использованием учетных данных их социальной сети мы начинаем этот гид с интеграции функции входа, предоставленной google после того как пользователь успешно вошел в систему с помощью своих учетных данных google, мы используем информацию об учетной записи, возвращаемую google, чтобы войти в новую учетную запись, которая будет связана с соответствующей учетной записью google в https //github com/templates back4app/ios sign in with google , мы предоставляем простой шаблон xcode, где вы можете протестировать различные методы входа, которые мы реализуем этот проект уже был представлен в https //www back4app com/docs/ios/parse swift sdk/users/user log in , вы можете вернуться к нему для получения более подробной информации о проекте предварительные требования чтобы завершить этот быстрый старт, вам нужно xcode приложение, созданное на back4app следуйте за https //www back4app com/docs/get started/new parse app чтобы узнать, как создать приложение parse на back4app примечание следуйте за https //www back4app com/docs/ios/parse swift sdk чтобы создать проект xcode, подключенный к back4app цель интегрировать функцию входа пользователя с использованием sdk google и parseswift 1 настройка sdk google после того как мы связали проект xcode https //www back4app com/docs/ios/parse swift sdk/install sdk приложением back4app , мы продолжаем добавлять sdk google, который позволит нам реализовать процесс входа в этом примере мы используем swift package manager (spm) для добавления зависимостей google sign in в проекте xcode перейдите в файл>добавить пакеты… и в строке поиска введите https //github com/google/googlesignin ios как только появится googlesignin ios в результатах, нажмите на кнопку add package затем перейдите на https //console cloud google com/home/dashboard вашего аккаунта разработчика google и https //console cloud google com/projectcreate новый проект как только проект будет создан, следующим шагом будет создание идентификатора клиента oauth в https //console cloud google com/ выберите ваш новый проект и перейдите на страницу учетных данных это можно найти в левом меню в процессе вам может понадобиться настроить экран согласия oauth, который появится в форме входа с помощью google, и заполнить соответствующие требования чтобы завершить этот шаг, мы должны добавить в схемы url приложения url, сгенерированный во время создания идентификатора клиента oauth перейдите к конфигурации проекта и выберите основной целевой объект приложения затем перейдите в раздел info и добавьте соответствующую схему url из вашего проекта google 2 использование входа в систему google с parseswift с googlesignin успешно интегрированным в ваш проект xcode, мы переходим к реализации функции входа в систему с помощью google в https //github com/templates back4app/ios sign in with google , logincontroller отвечает за обработку и отображение различных вариантов входа в систему затем мы настраиваем действие signinwithapplebutton в этом контроллере 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 } чтобы отобразить форму входа от google, googlesignin googlesignin sdk позволяет нам настроить и представить её через метод signin(with\ presenting\ callback) signin(with\ presenting\ callback) из класса gidsignin gidsignin кроме того, мы должны передать объект gidconfiguration gidconfiguration , созданный с использованием идентификатора клиента , созданного на предыдущем шаге, затем контроллер представления и замыкание обратного вызова в замыкании обратного вызова google возвращает учетные данные пользователя (встроенные в объект gidgoogleuser gidgoogleuser ) или ошибку, если аутентификация не удалась 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 } затем мы берем эти учетные данные и используем их для входа пользователя на платформу back4app объект, представляющий пользователя, является следующей структурой (см https //www back4app com/docs/ios/parse swift sdk/users/user log in , чтобы получить дополнительную информацию) 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 } поэтому учетные данные, возвращаемые google, содержат idtoken idtoken и id id пользователя, которые будут использованы для завершения процесса входа более точно, мы создаем объект parsegoogle\<user> parsegoogle\<user> и вызываем метод login(id\ idtoken\ completion) login(id\ idtoken\ completion) 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 проверка входа пользователя и создания сессии чтобы убедиться, что вход в систему google сработал, вы можете посмотреть на вашу back4app панель управления и увидеть нового пользователя пользователя , содержащего параметры google authdata authdata вы также можете проверить, что действительная сессия была создана на панели управления, содержащей указатель на соответствующий пользователь пользователь объект 4 привязка существующего пользователя к учетной записи google в случае, если ваше ios приложение требует ассоциации учетной записи google с существующим пользователем на вашей back4app платформе, объект parsegoogle\<user> parsegoogle\<user> реализует метод link(id\ completion ) link(id\ completion ) , в который вы передаете id id учетной записи google, которую нужно привязать 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 выход из системы процесс выхода из системы не отличается от стандартного способа вызова метода user signout() user signout() , как описано в предыдущих руководствах однако, когда пользователь входит в систему с учетной записью google, для согласованности вы также должны выйти из текущей учетной записи google мы можем достичь этого, вызвав следующий метод вместе с user signout() user signout() 1 gidsignin sharedinstance signout () чтобы проверить, есть ли у текущего пользователя связанная учетная запись google, вы можете сделать это, посмотрев на user current? authdata user current? authdata словарь 6 запустите приложение вы можете перейти в этот https //github com/templates back4app/ios sign in with google и скачать пример проекта перед запуском проекта убедитесь, что вы настроили профилиprovisioning с теми, которые связаны с вашей учетной записью разработчика заключение в конце этого руководства вы узнали, как войти в систему или привязать существующих back4app пользователей на ios, используя вход с помощью google в следующем руководстве мы продолжим с другим методом входа