Начало работы с аутентификацией Firebase на C++

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

Подключите свой проект C++ к Firebase

Прежде чем вы сможете использовать Firebase Authentication , вам необходимо:

  • Зарегистрируйте свой проект C++ и настройте его для использования Firebase.

    Если ваш проект C++ уже использует Firebase, значит, он уже зарегистрирован и настроен для Firebase.

  • Добавьте Firebase C++ SDK в свой проект C++.

Обратите внимание, что добавление Firebase в ваш проект C++ включает в себя задачи как в консоли Firebase , так и в вашем открытом проекте C++ (например, вы загружаете файлы конфигурации Firebase из консоли, а затем перемещаете их в свой проект C++).

Регистрация новых пользователей

Создайте форму, которая позволит новым пользователям регистрироваться в вашем приложении, используя свой адрес электронной почты и пароль. Когда пользователь заполняет форму, проверьте адрес электронной почты и пароль, предоставленные пользователем, а затем передайте их методу CreateUserWithEmailAndPassword :

firebase::Future<firebase::auth::AuthResult> result =
    auth
->CreateUserWithEmailAndPassword(email, password);

Вы можете проверить статус операции создания учетной записи, зарегистрировав обратный вызов для объекта CreateUserWithEmailAndPasswordLastResult Future, или, если вы пишете игру или приложение с каким-либо периодическим циклом обновления, опрашивая статус в цикле обновления.

Например, используя будущее:

firebase::Future<firebase::auth::AuthResult> result =
    auth
->CreateUserWithEmailAndPasswordLastResult();

// The lambda has the same signature as the callback function.
result
.OnCompletion(
   
[](const firebase::Future<firebase::auth::AuthResult>& result,
       
void* user_data) {
     
// `user_data` is the same as &my_program_context, below.
     
// Note that we can't capture this value in the [] because std::function
     
// is not supported by our minimum compiler spec (which is pre C++11).
     
MyProgramContext* program_context =
         
static_cast<MyProgramContext*>(user_data);

     
// Process create user result...
     
(void)program_context;
   
},
   
&my_program_context);

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

firebase::Future<firebase::auth::AuthResult> result =
    auth
->CreateUserWithEmailAndPasswordLastResult();
if (result.status() == firebase::kFutureStatusComplete) {
 
if (result.error() == firebase::auth::kAuthErrorNone) {
    firebase
::auth::AuthResult* auth_result = *result.result();
    printf
("Create user succeeded for email %s\n", auth_result.user.email().c_str());
 
} else {
    printf
("Created user failed with error '%s'\n", result.error_message());
 
}
}

Войти существующих пользователей

Создайте форму, которая позволит существующим пользователям входить в систему, используя свой адрес электронной почты и пароль. Когда пользователь заполнит форму, вызовите метод SignInWithEmailAndPassword :

firebase::Future<firebase::auth::AuthResult> result =
    auth
->SignInWithEmailAndPassword(email, password);

Получите результат операции входа в систему так же, как вы получили результат регистрации.

Установите прослушиватель состояния аутентификации и получите данные учетной записи

Чтобы реагировать на события входа и выхода, присоедините прослушиватель к глобальному объекту аутентификации. Этот прослушиватель вызывается всякий раз, когда изменяется состояние входа пользователя. Поскольку прослушиватель запускается только после полной инициализации объекта аутентификации и завершения любых сетевых вызовов, это лучшее место для получения информации о вошедшем в систему пользователе.

Создайте прослушиватель, реализовав абстрактный класс firebase::auth::AuthStateListener . Например, чтобы создать прослушиватель, который получает информацию о пользователе, когда пользователь успешно входит в систему:

class MyAuthStateListener : public firebase::auth::AuthStateListener {
 
public:
 
void OnAuthStateChanged(firebase::auth::Auth* auth) override {
    firebase
::auth::User user = auth.current_user();
   
if (user.is_valid()) {
     
// User is signed in
      printf
("OnAuthStateChanged: signed_in %s\n", user.uid().c_str());
     
const std::string displayName = user.DisplayName();
     
const std::string emailAddress = user.Email();
     
const std::string photoUrl = user.PhotoUrl();
   
} else {
     
// User is signed out
      printf
("OnAuthStateChanged: signed_out\n");
   
}
   
// ...
 
}
};

Прикрепите прослушиватель с помощью метода AddAuthStateListener объекта firebase::auth::Auth

MyAuthStateListener state_change_listener;
auth
->AddAuthStateListener(&state_change_listener);

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

Узнайте, как добавить поддержку других поставщиков удостоверений и анонимных гостевых учетных записей: