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

カスタム認証システムとUnityを使用してFirebaseで認証する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。
ユーザーが正常にサインインしたときにカスタム署名済みトークンを生成するように認証サーバーを変更することで、Firebase認証をカスタム認証システムと統合できます。アプリはこのトークンを受け取り、Firebaseでの認証に使用します。

あなたが始める前に

  1. Firebase認証を使用する前に、次のことを行う必要があります。

    • UnityプロジェクトをFirebaseプロジェクトに登録します。
    • UnityプロジェクトにFirebaseUnity SDK (具体的にはFirebaseAuth.unitypackage )を追加します。

    UnityプロジェクトにFirebaseを追加するで、これらの初期設定手順の詳細な手順を確認してください。

  2. プロジェクトのサーバーキーを取得します。
    1. プロジェクトの設定で[サービスアカウント]ページに移動します。
    2. [サービスアカウント]ページの[ FirebaseAdminSDK ]セクションの下部にある[新しい秘密鍵の生成]をクリックします。
    3. 新しいサービスアカウントの公開鍵と秘密鍵のペアは、コンピューターに自動的に保存されます。このファイルを認証サーバーにコピーします。

Firebaseで認証する

FirebaseAuthクラスは、すべてのAPI呼び出しのゲートウェイです。 FirebaseAuth.DefaultInstanceを介してアクセスできます。
Firebase.Auth.FirebaseAuth auth = Firebase.Auth.FirebaseAuth.DefaultInstance;

認証サーバーからのトークンを使用してFirebase.Auth.FirebaseAuth.SignInWithCustomTokenAsyncを呼び出します。

  1. ユーザーがアプリにサインインするときは、サインイン資格情報(ユーザー名やパスワードなど)を認証サーバーに送信します。サーバーは資格情報を確認し、有効な場合はカスタムトークンを返します。
  2. 認証サーバーからカスタムトークンを受け取ったら、それをFirebase.Auth.FirebaseAuth.SignInWithCustomTokenAsyncに渡して、ユーザーにサインインします:
    auth.SignInWithCustomTokenAsync(custom_token).ContinueWith(task => {
      if (task.IsCanceled) {
        Debug.LogError("SignInWithCustomTokenAsync was canceled.");
        return;
      }
      if (task.IsFaulted) {
        Debug.LogError("SignInWithCustomTokenAsync encountered an error: " + task.Exception);
        return;
      }
    
      Firebase.Auth.FirebaseUser newUser = task.Result;
      Debug.LogFormat("User signed in successfully: {0} ({1})",
          newUser.DisplayName, newUser.UserId);
    });
    

次のステップ

ユーザーが初めてサインインすると、新しいユーザーアカウントが作成され、ユーザーがサインインした資格情報(つまり、ユーザー名とパスワード、電話番号、または認証プロバイダー情報)にリンクされます。この新しいアカウントはFirebaseプロジェクトの一部として保存され、ユーザーのログイン方法に関係なく、プロジェクト内のすべてのアプリでユーザーを識別するために使用できます。

  • アプリでは、 Firebase.Auth.FirebaseUserオブジェクトからユーザーの基本的なプロファイル情報を取得できます。

    Firebase.Auth.FirebaseUser user = auth.CurrentUser;
    if (user != null) {
      string name = user.DisplayName;
      string email = user.Email;
      System.Uri photo_url = user.PhotoUrl;
      // The user's Id, unique to the Firebase project.
      // Do NOT use this value to authenticate with your backend server, if you
      // have one; use User.TokenAsync() instead.
      string uid = user.UserId;
    }
    
  • FirebaseRealtimeデータベースとCloudStorageのセキュリティルールでは、ログインしたユーザーの一意のユーザーIDをauth変数から取得し、それを使用してユーザーがアクセスできるデータを制御できます。

認証プロバイダーのクレデンシャルを既存のユーザーアカウントにリンクすることで、ユーザーが複数の認証プロバイダーを使用してアプリにサインインできるようにすることができます。

ユーザーをサインアウトするには、 SignOut()を呼び出します。

auth.SignOut();