使用 C++ 匿名使用 Firebase 進行身份驗證

您可以使用 Firebase 身份驗證來創建和使用臨時匿名帳戶向 Firebase 進行身份驗證。這些臨時匿名帳戶可用於允許尚未註冊您的應用程序的用戶使用受安全規則保護的數據。如果匿名用戶決定申請到您的應用程序,你可以聯繫他們的登錄憑據匿名帳戶,以便他們可以繼續工作,在今後的會議所保護的數據。

在你開始之前

  1. 添加火力地堡到C ++項目
  2. 如果您還沒有連接您的應用程序到你的火力地堡項目,從這樣做火力地堡控制台
  3. 啟用匿名身份驗證:
    1. 火力地堡控制台,打開驗證部分。
    2. 登錄的方法頁面上,啟用匿名登錄方法。

匿名使用 Firebase 進行身份驗證

當已註銷的用戶使用需要通過 Firebase 進行身份驗證的應用功能時,請完成以下步驟以匿名登錄用戶:

Auth類是所有API調用的網關。
  1. 添加驗證和應用頭文件:
    #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 。之間存在一個一到一映射AppAuth
    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新身份驗證提供:

      谷歌登錄在
      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方法:

      // 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成功,用戶的新帳戶可以訪問匿名帳戶的火力地堡數據。

    下一步

    現在,用戶可以與火力地堡進行身份驗證,就可以控制他們使用你的火力地堡數據庫中的數據訪問火力地堡規則