Google is committed to advancing racial equity for Black communities. See how.
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

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

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

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

  1. Добавьте Firebase в свой проект C ++ .
  2. build.gradle , что в build.gradle файле build.gradle уровне проекта build.gradle репозиторий Google Maven как в buildscript и в разделы allprojects .
  3. Если вы еще не подключили свое приложение к проекту Firebase, сделайте это из консоли Firebase .
  4. Включить анонимную аутентификацию:
    1. В консоли Firebase откройте раздел Auth .
    2. На странице " Методы входа" включите метод анонимного входа.

Анонимно аутентифицируйтесь с 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::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());
      }
    }
    
    Или, если ваша программа управляется событиями, вы можете предпочесть регистрацию обратный вызов в будущее .
  • Преобразование анонимной учетной записи в постоянную.

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

    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);
      
      Электронная почта-пароль для входа
      firebase::auth::Credential credential =
          firebase::auth::EmailAuthProvider::GetCredential(email, password);
      
    3. Передайте объект auth::Credential в метод LinkWithCredential пользователя, 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, вы можете контролировать их доступ к данным в своей базе данных Firebase, используя правила Firebase .