Аутентификация Firebase с помощью Google Sign-In в iOS

от автора

Аутентификация Firebase с помощью Google Sign-In в iOS

Введение

Аутентификация Firebase с использованием учетных записей Google предоставляет простой способ входа пользователей в приложение iOS с использованием их учетных записей Google. В этом ресё я расскажу, как я реализовал аутентификацию Firebase с помощью Google Sign-In в своем iOS-приложении. Я представлю примеры кода, чтобы показать процесс реализации из моего опыта.

Настройка проекта в Firebase

Вот краткая инструкция для настройки проекта в Firebase и использования его в своем iOS-приложении:

Создать проект в консоли Firebase

Перейдите на веб-сайт консоли Firebase и создайте новый проект. Введите имя проекта и выберите вашу страну или регион. Затем нажмите кнопку «Создать проект».

Добавить iOS-приложение в проект Firebase

После создания проекта вам будет предложено добавить платформу для вашего приложения. Выберите iOS и введите название вашего приложения (например, «MyApp»). Затем введите идентификатор пакета приложения (Bundle Identifier), который вы используете в своем проекте Xcode. После этого нажмите кнопку «Регистрация приложения».

Загрузить файл конфигурации

После регистрации приложения вам будет предложено загрузить файл конфигурации GoogleService-Info.plist. Нажмите кнопку «Загрузить GoogleService-Info.plist» и сохраните файл на вашем компьютере.

Добавить файл конфигурации в свой проект Xcode

Откройте свой проект Xcode и перетащите файл GoogleService-Info.plist в корневую папку вашего проекта. Убедитесь, что файл добавлен в целевую папку вашего приложения.

Установка SDK Firebase и Google Sign-In

Я установил необходимые SDK Firebase и Google Sign-In в свой проект. Для этого я использовал Swift Package Manager и импортировал соответствующие фреймворки в мои файлы.

import Firebase import GoogleSignIn 

Включение Google Sign-In в консоли Firebase

В консоли Firebase я включил провайдер Google на вкладке «Sign-in method» в разделе «Authentication». Это позволило пользователям входить в приложение, используя свои учетные записи Google.

Импорт необходимых заголовочных файлов

Я импортировал необходимые заголовочные файлы Firebase и Google Sign-In в свой код для использования их функциональности.

import UIKit import Firebase import GoogleSignIn 

Добавление обратного идентификатора в Info.plist

Я добавил обратный идентификатор (REVERSED_CLIENT_ID) из моего GoogleService-Info.plist в файл Info.plist моего проекта. Это было необходимо для обработки перенаправления аутентификации от Google.

<key>CFBundleURLTypes</key> <array>     <dict>         <key>CFBundleURLSchemes</key>         <array>             <string>com.googleusercontent.apps.REVERSED_CLIENT_ID</string>         </array>     </dict> </array> 

Добавление GoogleService-Info.plist в проект

Я добавил файл GoogleService-Info.plist, который я получил при настройке проекта в консоли Firebase, в мой проект. Убедитесь, что файл был добавлен в правильную директорию внутри вашего проекта.

Конфигурация FirebaseApp

В методе application(_:didFinishLaunchingWithOptions:) класса AppDelegate я выполнил конфигурацию FirebaseApp для правильной инициализации сервисов Firebase в моем приложении.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {     FirebaseApp.configure()     return true } 

Обработка URL-схем

Для обработки URL, полученного во время процесса аутентификации, я реализовал метод application(_:open:url:options:) класса AppDelegate. В этом методе я использовал GIDSignIn.sharedInstance.handle(url) для обработки URL и завершения процесса аутентификации.

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {     return GIDSignIn.sharedInstance.handle(url) } 

Инициализация и настройка Google Sign-In

В классе SignInViewController я произвел инициализацию и настройку Google Sign-In. В методе viewDidLoad() я инициализировал Google Sign-In, установил делегата и создал кнопку для входа через Google.

override func viewDidLoad() {     super.viewDidLoad()     GIDSignIn.sharedInstance().delegate = self // Создание кнопки для входа через Google  let googleSignInButton = GIDSignInButton() googleSignInButton.addTarget(self, action: #selector(googleSignIn), for: .touchUpInside) googleSignInButton.center = view.center view.addSubview(googleSignInButton)  } 

Обработка входа через Google

Я реализовал метод googleSignIn(), который вызывается при нажатии кнопки входа через Google. Внутри этого метода я использовал GIDSignIn.sharedInstance().signIn() для начала процесса входа пользователя через Google. Я также обработал результат входа пользователя и получил необходимые данные для создания учетных данных Firebase.

@objc func googleSignIn() {     GIDSignIn.sharedInstance().signIn() } 

Обработка успешной аутентификации Google

В данном шаге реализуется обработка успешной аутентификации пользователя через Google. После того, как пользователь успешно войдет в систему с использованием учетных данных Google, выполняется следующий код:

@objc func googleSignIn() {     GIDSignIn.sharedInstance.signIn(withPresenting: self) { user, error in         if let error = error {             // Обработка ошибки входа через Google             print("Ошибка аутентификации через Google: \\(error.localizedDescription)")             // Можно выполнить дополнительные действия в случае ошибки, например, вывод сообщения об ошибке пользователю             return         }     // Если вход успешен, перейти на главный экран     self.navigateToDashboard() }  } 

Если вход через Google прошел успешно и ошибок не возникло, вызывается функция navigateToDashboard(), которая осуществляет переход на главный экран приложения.

Навигация на главный экран

Я реализовал метод navigateToDashboard(), который вызывается после успешной аутентификации пользователя. Внутри этого метода я выполнил переход на главный экран приложения или выполнил другие необходимые действия после аутентификации.

private func navigateToDashboard() {     // Реализуйте переход на главный экран приложения     // Например, используйте навигационный контроллер или презентуйте другой экран } 

Заключение

После завершения всех этих шагов я успешно реализовал аутентификацию Firebase с помощью Google Sign-In в моем iOS-приложении. Обратите внимание, что приведенные кодовые фрагменты являются основой для реализации и могут быть дополнены или изменены в соответствии с требованиями вашего проекта.


ссылка на оригинал статьи https://habr.com/ru/articles/741408/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *