Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

C ++を使用してFirebaseで匿名で認証する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Firebase Authentication を使用して一時的な匿名アカウントを作成し、Firebase で認証するために使用できます。これらの一時的な匿名アカウントを使用して、アプリにまだサインアップしていないユーザーが、セキュリティ ルールによって保護されたデータを操作できるようにすることができます。匿名ユーザーがアプリにサインアップすることを決定した場合、サインイン資格情報を匿名アカウントにリンクして、今後のセッションで保護されたデータを引き続き使用できるようにすることができます。

あなたが始める前に

  1. C++ プロジェクトに Firebase を追加します
  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::Appfirebase::auth::Authクラスを取得します。 AppAuthの間には 1 対 1 のマッピングがあります。
    firebase::auth::Auth* auth = firebase::auth::Auth::GetAuth(app);
    
  • Auth::SignInAnonymouslyを呼び出します。
    firebase::Future<firebase::auth::User*> result = auth->SignInAnonymously();
    
  • プログラムに定期的に実行される更新ループがある場合 (たとえば、1 秒あたり 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 回確認できます。 Future にコールバックを登録します
  • 匿名アカウントを永久アカウントに変換する

    匿名ユーザーがアプリにサインアップするとき、新しいアカウントで作業を継続できるようにすることができます。たとえば、ユーザーがサインアップする前にショッピング カートに追加したアイテムを、新しいアカウントで利用できるようにすることができます。アカウントのショッピング カート。これを行うには、次の手順を実行します。

    1. ユーザーがサインアップしたら、 Auth::SignInWithメソッドの 1 つを呼び出すまで、ユーザーの認証プロバイダーのサインイン フローを完了します。たとえば、ユーザーの 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メソッドに渡します。

      // 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にアップグレードした場合は、 Cloud Loggingis_anonでフィルタリングできます。

    次のステップ

    ユーザーが Firebase で認証できるようになったので、 Firebase ルールを使用して、Firebase データベース内のデータへのアクセスを制御できます。