Вы можете разрешить пользователям аутентифицироваться в Firebase, используя свои учетные записи Google, интегрировав функцию входа через Google в ваше приложение.
AI prompt for AI assistance
Для получения помощи от ИИ скопируйте приведенную ниже подсказку в свой агент программирования ИИ (например, Antigravity , Claude Code, Codex и Cursor). Вы можете настроить подсказку и взаимодействовать с агентом. Подробную информацию об установке см. в разделе «Навыки агентов Firebase» .
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up and use Firebase Authentication with Google Sign-In in my app.
Прежде чем начать
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode, открыв проект приложения, перейдите в меню File > Add Packages .
- При появлении запроса добавьте репозиторий Firebase Apple Platforms SDK:
- Выберите библиотеку Firebase Authentication .
- Добавьте флаг
-ObjCв раздел «Другие флаги компоновщика» в настройках сборки вашей целевой системы. - После завершения Xcode автоматически начнет разрешение и загрузку ваших зависимостей в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk.git
Добавьте SDK для входа через Google в свой проект.
В Xcode, открыв проект приложения, перейдите в меню File > Add Packages .
При появлении запроса добавьте репозиторий Google Sign-In SDK:
https://github.com/google/GoogleSignIn-iOSПосле завершения Xcode автоматически начнет разрешение и загрузку ваших зависимостей в фоновом режиме.
Включите вход через Google для вашего проекта Firebase.
Чтобы разрешить пользователям входить в систему с помощью Google Sign-In, необходимо сначала включить поставщика Google Sign-In для вашего проекта Firebase:
В консоли Firebase перейдите в раздел Безопасность > Аутентификация .
На вкладке «Способ входа» включите поставщика услуг Google .
Нажмите « Сохранить ».
Download a new copy of your project's
GoogleService-Info.plistfile and copy it to your Xcode project. Overwrite any existing versions with the new one. (See Add Firebase to your iOS project .)
Импортируйте необходимые заголовочные файлы.
Во-первых, необходимо импортировать заголовочные файлы Firebase SDK и Google Sign-In SDK в ваше приложение.
Быстрый
import FirebaseAuth import GoogleSignIn
Objective-C
@import FirebaseCore; @import GoogleSignIn;
Внедрить вход через Google.
Для реализации входа через Google выполните следующие шаги. Подробную информацию об использовании входа через Google на iOS см. в документации для разработчиков Google Sign-In.
- Добавьте пользовательские схемы URL-адресов в свой проект Xcode:
- Откройте конфигурацию проекта: щелкните имя проекта в левом древовидном представлении. Выберите свое приложение в разделе «ЦЕЛИ» , затем перейдите на вкладку «Информация» и разверните раздел «Типы URL» .
- Click the + button, and add a URL scheme for your reversed client ID. To find this value, open the
configuration file, and look for theGoogleService-Info.plist REVERSED_CLIENT_IDkey. Copy the value of that key, and paste it into the URL Schemes box on the configuration page. Leave the other fields untouched.После завершения настройки ваш конфигурационный файл должен выглядеть примерно так (но с учетом значений, специфичных для вашего приложения):

- В методе
application:didFinishLaunchingWithOptions:вашего делегата приложения настройте объектFirebaseApp.Быстрый
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Implement the
application:openURL:options:method of your app delegate. The method should call thehandleURLmethod of theGIDSignIninstance, which will properly handle the URL that your application receives at the end of the authentication process.Быстрый
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) { // ... } return GIDSignIn.sharedInstance.handle(url) }
Objective-C
- (BOOL)application:(nonnull UIApplication *)application openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<NSString *, id> *)options { return [[GIDSignIn sharedInstance] handleURL:url]; }
- Pass the presenting view controller and client ID for your app to the
signInmethod of the Google Sign-In provider and create a Firebase Authentication credential from the resulting Google auth token:Быстрый
guard let clientID = FirebaseApp.app()?.options.clientID else { return } // Create Google Sign In configuration object. let config = GIDConfiguration(clientID: clientID) GIDSignIn.sharedInstance.configuration = config // Start the sign in flow! GIDSignIn.sharedInstance.signIn(withPresenting: viewController) { result, error in guard error == nil else { // ... return } guard let user = result?.user, let idToken = user.idToken?.tokenString else { // ... return } let credential = GoogleAuthProvider.credential(withIDToken: idToken, accessToken: user.accessToken.tokenString) self.signIn(with: credential) }
Objective-C
GIDConfiguration *config = [[GIDConfiguration alloc] initWithClientID:[FIRApp defaultApp].options.clientID]; [GIDSignIn.sharedInstance setConfiguration:config]; __weak __auto_type weakSelf = self; [GIDSignIn.sharedInstance signInWithPresentingViewController:self completion:^(GIDSignInResult * _Nullable result, NSError * _Nullable error) { __auto_type strongSelf = weakSelf; if (strongSelf == nil) { return; } if (error == nil) { FIRAuthCredential *credential = [FIRGoogleAuthProvider credentialWithIDToken:result.user.idToken.tokenString accessToken:result.user.accessToken.tokenString]; // ... } else { // ... } }];
- Add a
GIDSignInButtonto your storyboard, XIB file, or instantiate it programmatically. To add the button to your storyboard or XIB file, add a View and set its custom class toGIDSignInButton. - (Необязательно ): Если вы хотите настроить кнопку, выполните следующие действия:
Быстрый
- В контроллере представления объявите кнопку входа в систему в качестве свойства.
@IBOutlet weak var signInButton: GIDSignInButton!
- Свяжите кнопку со свойством
signInButton, которое вы только что объявили. - Настройте кнопку, задав свойства объекта GIDSignInButton .
Objective-C
- В заголовочном файле вашего контроллера представления объявите кнопку входа в систему в качестве свойства.
@property(weak, nonatomic) IBOutlet GIDSignInButton *signInButton;
- Свяжите кнопку со свойством
signInButton, которое вы только что объявили. - Настройте кнопку, задав свойства объекта GIDSignInButton .
- В контроллере представления объявите кнопку входа в систему в качестве свойства.
Аутентификация с помощью Firebase
Наконец, завершите процесс входа в Firebase, используя учетные данные, созданные на предыдущем шаге.
Быстрый
Auth.auth().signIn(with: credential) { result, error in guard error == nil else { // ... return } // At this point, our user is signed in }
Objective-C
[[FIRAuth auth] signInWithCredential:credential completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { if (isMFAEnabled && error && error.code == FIRAuthErrorCodeSecondFactorRequired) { FIRMultiFactorResolver *resolver = error.userInfo[FIRAuthErrorUserInfoMultiFactorResolverKey]; NSMutableString *displayNameString = [NSMutableString string]; for (FIRMultiFactorInfo *tmpFactorInfo in resolver.hints) { [displayNameString appendString:tmpFactorInfo.displayName]; [displayNameString appendString:@" "]; } [self showTextInputPromptWithMessage:[NSString stringWithFormat:@"Select factor to sign in\n%@", displayNameString] completionBlock:^(BOOL userPressedOK, NSString *_Nullable displayName) { FIRPhoneMultiFactorInfo* selectedHint; for (FIRMultiFactorInfo *tmpFactorInfo in resolver.hints) { if ([displayName isEqualToString:tmpFactorInfo.displayName]) { selectedHint = (FIRPhoneMultiFactorInfo *)tmpFactorInfo; } } [FIRPhoneAuthProvider.provider verifyPhoneNumberWithMultiFactorInfo:selectedHint UIDelegate:nil multiFactorSession:resolver.session completion:^(NSString * _Nullable verificationID, NSError * _Nullable error) { if (error) { [self showMessagePrompt:error.localizedDescription]; } else { [self showTextInputPromptWithMessage:[NSString stringWithFormat:@"Verification code for %@", selectedHint.displayName] completionBlock:^(BOOL userPressedOK, NSString *_Nullable verificationCode) { FIRPhoneAuthCredential *credential = [[FIRPhoneAuthProvider provider] credentialWithVerificationID:verificationID verificationCode:verificationCode]; FIRMultiFactorAssertion *assertion = [FIRPhoneMultiFactorGenerator assertionWithCredential:credential]; [resolver resolveSignInWithAssertion:assertion completion:^(FIRAuthDataResult * _Nullable authResult, NSError * _Nullable error) { if (error) { [self showMessagePrompt:error.localizedDescription]; } else { NSLog(@"Multi factor finanlize sign in succeeded."); } }]; }]; } }]; }]; } else if (error) { // ... return; } // User successfully signed in. Get user data from the FIRUser object if (authResult == nil) { return; } FIRUser *user = authResult.user; // ... }];
Следующие шаги
После первого входа пользователя в систему создается новая учетная запись, которая связывается с учетными данными — то есть именем пользователя и паролем, номером телефона или информацией о поставщике аутентификации, — которые пользователь использовал для входа. Эта новая учетная запись хранится как часть вашего проекта Firebase и может использоваться для идентификации пользователя во всех приложениях вашего проекта, независимо от способа входа пользователя.
В ваших приложениях вы можете получить основную информацию профиля пользователя из объекта
User. См. раздел «Управление пользователями» .В правилах безопасности Firebase Realtime Database и Cloud Storage вы можете получить уникальный идентификатор пользователя, вошедшего в систему, из переменной
authи использовать его для управления доступом пользователя к данным.
Вы можете разрешить пользователям входить в ваше приложение, используя несколько поставщиков аутентификации, связав учетные данные поставщика аутентификации с существующей учетной записью пользователя.
Для выхода из системы пользователя вызовите signOut: .
Быстрый
let firebaseAuth = Auth.auth() do { try firebaseAuth.signOut() } catch let signOutError as NSError { print("Error signing out: %@", signOutError) }
Objective-C
NSError *signOutError; BOOL status = [[FIRAuth auth] signOut:&signOutError]; if (!status) { NSLog(@"Error signing out: %@", signOutError); return; }
Также может потребоваться добавить код обработки ошибок для всего спектра ошибок аутентификации. См. раздел «Обработка ошибок» .