Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Аутентификация в Firebase анонимно с использованием C++

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

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

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

  1. Добавьте Firebase в свой проект C++ .
  2. Если вы еще не подключили свое приложение к проекту Firebase, сделайте это из консоли Firebase .
  3. Включить анонимную авторизацию:
    1. В консоли Firebase откройте раздел Auth .
    2. На странице « Методы входа» включите метод анонимного входа.
    3. Необязательно : если вы обновили свой проект до Firebase Authentication with Identity Platform , вы можете включить автоматическую очистку. Если вы включите этот параметр, анонимные учетные записи старше 30 дней будут автоматически удаляться. В проектах с включенной автоматической очисткой анонимная проверка подлинности больше не будет учитываться при определении лимитов использования или квот на выставление счетов. См. Автоматическая очистка .

Анонимно авторизоваться в Firebase

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

Класс Auth является шлюзом для всех вызовов API.
  1. Добавьте файлы заголовков Auth и App:
    #include "firebase/app.h"
    #include "firebase/auth.h"
    
  2. В коде инициализации создайте класс firebase::App .
    #if defined(__ANDROID__)
      firebase::App* app =
          firebase::App::Create(firebase::AppOptions(), my_jni_env, my_activity);
    #else
      firebase::App* app = firebase::App::Create(firebase::AppOptions());
    #endif  // defined(__ANDROID__)
    
  3. Получите класс firebase::auth::Auth для вашего firebase::App . Между App и Auth существует однозначное соответствие.
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Вызов Auth::SignInAnonymously .
    firebase::Future<firebase::auth::User*> result = auth->SignInAnonymously();
    
  • Если ваша программа имеет цикл обновления, который выполняется регулярно (скажем, 30 или 60 раз в секунду), вы можете проверить результаты один раз за обновление с помощью Auth::SignInAnonymouslyLastResult :
    firebase::Future<firebase::auth::User*> result =
        auth->SignInAnonymouslyLastResult();
    if (result.status() == firebase::kFutureStatusComplete) {
      if (result.error() == firebase::auth::kAuthErrorNone) {
        firebase::auth::User* user = *result.result();
        printf("Sign in succeeded for `%s`\n", user->display_name().c_str());
      } else {
        printf("Sign in failed with error '%s'\n", result.error_message());
      }
    }
    
    Или, если ваша программа управляется событиями, вы можете предпочесть зарегистрировать обратный вызов на Future .
  • Преобразование анонимной учетной записи в постоянную учетную запись

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

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

      Вход в Google
      firebase::auth::Credential credential =
          firebase::auth::GoogleAuthProvider::GetCredential(google_id_token,
                                                            nullptr);
      
      Вход в Facebook
      firebase::auth::Credential credential =
          firebase::auth::FacebookAuthProvider::GetCredential(access_token);
      
      -placeholder7 Вход с паролем по электронной почте
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Передайте объект auth::Credential методу LinkWithCredential пользователя, выполнившего вход:

      // Link the new credential to the currently active user.
      firebase::auth::User* current_user = auth->current_user();
      firebase::Future<firebase::auth::User*> result =
          current_user->LinkWithCredential(credential);
      

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

    Автоматическая очистка

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

    • Любые анонимные учетные записи, созданные после включения автоматической очистки, могут быть автоматически удалены в любое время по истечении 30 дней после создания.
    • Анонимные учетные записи, созданные до включения автоматической очистки, будут подлежать автоматическому удалению через 30 дней после включения автоматической очистки.
    • Если вы отключите автоматическую очистку, любые анонимные учетные записи, запланированные для удаления, останутся запланированными для удаления. Эти учетные записи не учитываются в лимитах использования или квотах выставления счетов.
    • Если вы «обновите» анонимную учетную запись, связав ее с любым методом входа, учетная запись не будет удалена автоматически.

    Если вы хотите узнать, сколько пользователей будет затронуто, прежде чем вы включите эту функцию, и вы обновили свой проект до Firebase Authentication with Identity Platform , вы можете отфильтровать is_anon в Cloud Logging .

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

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