Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
Эта страница переведена с помощью Cloud Translation API.
Switch to English

Анонимно аутентифицируйтесь с Firebase на iOS

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

Прежде чем вы начнете

  1. Добавьте Firebase в свой проект iOS .
  2. Включите в свой Podfile следующие Podfile :
    pod 'Firebase/Auth'
    
  3. Если вы еще не подключили свое приложение к проекту Firebase, сделайте это из консоли Firebase .
  4. Включить анонимную аутентификацию:
    1. В консоли Firebase откройте раздел Auth .
    2. На странице " Методы входа" включите метод анонимного входа.

Анонимно аутентифицируйтесь с Firebase

Когда вышедший из системы пользователь использует функцию приложения, требующую аутентификации с помощью Firebase, войдите в систему анонимно, выполнив следующие действия:

  1. Импортируйте модуль Firebase в свой UIApplicationDelegate :

    Быстрый

    import Firebase

    Цель-C

    @import Firebase;
  2. Настройте общий экземпляр FirebaseApp , как правило, в методе application:didFinishLaunchingWithOptions: вашего приложения:

    Быстрый

    // Use Firebase library to configure APIs
    FirebaseApp.configure()

    Цель-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  3. Вызовите метод signInAnonymouslyWithCompletion: :

    Быстрый

    Auth.auth().signInAnonymously() { (authResult, error) in
      // ...
    }
    

    Цель-C

    [[FIRAuth auth] signInAnonymouslyWithCompletion:^(FIRAuthDataResult * _Nullable authResult,
                                                      NSError * _Nullable error) {
       // ...
     }];
    
  4. Если метод signInAnonymouslyWithCompletion: завершается без ошибок, вы можете получить данные учетной записи анонимного пользователя из объекта FIRAuthDataResult :

    Быстрый

    guard let user = authResult?.user else { return }
    let isAnonymous = user.isAnonymous  // true
    let uid = user.uid
    

    Цель-C

    FIRUser *user = authResult.user;
    BOOL isAnonymous = user.anonymous;  // YES
    NSString *uid = user.uid;
    

Преобразование анонимной учетной записи в постоянную.

Когда анонимный пользователь регистрируется в вашем приложении, вы можете разрешить ему продолжить работу с его новой учетной записью - например, вы можете захотеть сделать элементы, которые пользователь добавил в свою корзину, прежде чем он подписался, доступными в своей новой учетной записи. корзина покупок аккаунта. Для этого выполните следующие действия:

  1. Когда пользователь регистрируется, завершите процесс входа для поставщика аутентификации пользователя до, но не включая, вызова одного из методов FIRAuth.signInWith . Например, получите токен Google ID пользователя, токен доступа Facebook или адрес электронной почты и пароль.
  2. Получите FIRAuthCredential для нового поставщика аутентификации:

    Вход в Google
    Быстрый
    guard let authentication = user.authentication else { return }
    let credential = GoogleAuthProvider.credential(withIDToken: authentication.idToken,
                                                      accessToken: authentication.accessToken)
    
    Цель-C
    GIDAuthentication *authentication = user.authentication;
    FIRAuthCredential *credential =
    [FIRGoogleAuthProvider credentialWithIDToken:authentication.idToken
                                     accessToken:authentication.accessToken];
    
    Логин в фейсбук
    Быстрый
    let credential = FacebookAuthProvider.credential(withAccessToken: AccessToken.current!.tokenString)
    
    Цель-C
    FIRAuthCredential *credential = [FIRFacebookAuthProvider
        credentialWithAccessToken:[FBSDKAccessToken currentAccessToken].tokenString];
    
    Электронная почта-пароль для входа
    Быстрый
    let credential = EmailAuthProvider.credential(withEmail: email, password: password)
    
    Цель-C
    FIRAuthCredential *credential =
        [FIREmailAuthProvider credentialWithEmail:email
                                                 password:password];
    
  3. Передайте объект FIRAuthCredential в систему пользователю linkWithCredential:completion: метод:

    Быстрый
        user.link(with: credential) { (authResult, error) in
      // ...
    }
    }
    
    Цель-C
        [[FIRAuth auth].currentUser linkWithCredential:credential
        completion:^(FIRAuthDataResult *result, NSError *_Nullable error) {
      // ...
    }];
    

Если вызов linkWithCredential:completion: завершается успешно, новая учетная запись пользователя может получить доступ к данным Firebase анонимной учетной записи.

Следующие шаги

Теперь, когда пользователи могут проходить аутентификацию с помощью Firebase, вы можете контролировать их доступ к данным в своей базе данных Firebase, используя правила Firebase .