Google 致力于为黑人社区推动种族平等。查看具体举措

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

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

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

  1. Добавить Firebase в свой проект IOS .
  2. Включите следующие стручки в вашем 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,
      let idToken = authentication.idToken
    else {
      return
    }
    
    let credential = GoogleAuthProvider.credential(withIDToken: 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 .