Google Identity Toolkit から Firebase Authentication に移行する

Google Identity Toolkit の最新バージョンは、 Firebase Authentication。 今後、Identity Toolkit での機能開発は凍結され、すべての新機能が Firebase Authentication で機能開発を行いますGoogle がおすすめするのは、 Identity Toolkit の開発者が Firebase Authentication にすぐに移行できるようにする アプリケーションにとって実用的であること。Identity Toolkit を使用すれば 今後通知なく廃止されることはありません

新機能

Firebase Authentication には、 Google Identity Toolkit:

  • Firebase のすべてにアクセス

    Firebase は、高品質のアプリケーションをすばやく開発できるモバイル プラットフォームです。 ユーザーベースを拡大して収益を増やすことができます。Firebase を構成するのは さまざまな組み合わせが用意されており、ニーズや 次のインフラストラクチャを含む: モバイル 分析 クラウド メッセージングRealtime Database の場合 ファイル ストレージ静的ホスティングリモート構成、 モバイル クラッシュ レポート Android のテスト

  • 更新された UI

    Google の最新の UX に基づいて UI フローを完全に再構築 あります。これには、パスワードの再設定、アカウントのリンク、新規/既存サービスが含まれる コーディングやプロセスに多大な時間を要することが多い 使用します。Smart Lock for Passwords と統合されている ログインや登録のコンバージョンを大幅に改善 をご利用ください。アプリをご利用いただけます。 アプリケーションに合わせてテーマを簡単に変更でき、 カスタマイズ性に優れているため、Android および iOS オープンソース化されています。

  • サーバー設定の簡素化

    デベロッパーが Firebase Authentication をより簡単に使用できるようになりました。あり Identity Toolkit を実装することで、多くのデベロッパーが メール復元フローが原因でユーザーが メールを復元できず パスワードを忘れた可能性があります。Firebase Authentication は 電子メールの確認、パスワードのリセット、パスワードの変更に関するメッセージを ユーザーとテキストを簡単にカスタマイズできる 提供しますまた、インフラストラクチャを UI ウィジェット: リダイレクトと パスワードの変更操作を完了できます。

  • 新しい管理コンソール

    Firebase のデベロッパー コンソールが新しくなりました [Authentication] セクションでは、IP アドレスを表示、変更、 できます。これは、ログインと登録のフローをデバッグする際に非常に便利です。 このコンソールでは、認証方法と IAM ポリシーの構成も カスタマイズすることもできます。

  • 新しい SDK

    Identity Toolkit のすべてのサーバー API は、 クライアント ライブラリ(Android、iOS、ウェブ)デベロッパーは 新旧のユーザーのログイン、登録、ユーザー プロパティへのアクセス、リンク、更新、 アカウントを削除したり、パスワードをリセットしたりできます。固定の UI に縛られる必要はありません。 必要に応じて、独自のログインフロー全体を手動で構築し、 体験を提供できます

  • モバイルアプリのセッション管理

    Identity Toolkit を使用して、アプリは ID と認証情報に基づいて 初期認証イベントを記録します。Firebase Auth では、 認証から作成された更新トークンを受け取るバックエンド サービス そのトークンと引き換えに、Android、iOS、 使用できます。ユーザーがパスワードを変更しても、更新トークンは 新しいアクセス トークンを生成できなくなります。これにより、次の期間までアクセスが そのデバイスでユーザーが再認証を行います。

  • 匿名認証と GitHub 認証

    Firebase Authentication は、GitHub と 匿名です。匿名ログインを使用すると、固有のユーザー ID を作成できます。その際、 ユーザーにログインや登録の操作を要求する。新しい ユーザーとして認証された API 呼び出しを、通常どおりに 通常のユーザーと共有できますユーザーがアカウントに登録すると、 アクティビティは同一のユーザー ID で保持されます。この方法は たとえばサーバーサイドのショッピングカートや ユーザーに確認してから、登録フローを案内します。

機能の違い

現在 Firebase で利用できない Identity Toolkit 機能 認証。その他の機能は再設計され、動作が異なります。 これらの機能が重要な業務である場合は、すぐには移行しないことをおすすめします 説明します。多くの場合、こうした機能はアプリや 簡単なフォールバックによって移行を進めることができます。

サーバーサイドの違い

Identity Toolkit のコアサービスとその基盤となる REST API は、 検証ロジック、プライマリ ユーザー データベースはマイナー アップデートのみ加えられました。 ただし、一部の機能と Firebase Authentication の統合方法 変更されたからです。

  • ID プロバイダ

    PayPal と AOL はサポートされていません。以下を持つユーザー アカウントは引き続き、 パスワードの再設定フローを確認し、アカウントのパスワードを設定します。

  • サーバー ライブラリ

    現在、次の Firebase Admin SDK を利用できます。 Java、Node.js、Python、Go、C#で利用できます

  • アカウント管理メール

    パスワードの再設定、メール確認、メール変更メッセージは、 実行されていること、またはデベロッパーの 独自のメールサーバーです現在、Firebase メール テンプレートでご利用いただけるのは カスタマイズが可能です。

  • メールアドレス変更の確認

    Identity Toolkit では、ユーザーがメールアドレスの変更を決定すると、 メールを継続するためのリンクが記載されたメールが新しいアドレスに送信されます アドレス変更フローを実行します

    Firebase は、取り消しメールを次のアドレスに送信してメールアドレスの変更を確認します。 変更を元に戻すためのリンクが記載された古いメールアドレス。

  • IdP のロールアウト

    Identity Toolkit にはログインに ID プロバイダを追加する機能があった テストできます。テストすることで、 サポート リクエストを受け付けています。この機能は Firebase Authentication で削除されました。

クライアントサイドの違い

Firebase では、Google Identity Toolkit が提供する機能は次の 2 つに components:

  • Firebase Authentication SDK

    Firebase Authentication には、Identity Toolkit の REST API は、Android、iOS、App Engine で利用できるクライアント SDK にパッケージ化されています。 使用できます。SDK を使用して、ユーザーのログインと登録を行うことができます。アクセス ユーザー プロフィール情報アカウントのリンク、更新、削除パスワードを再設定 を介してバックエンド サービスと通信する代わりに、SDK を使用して REST 呼び出し。

  • FirebaseUI Auth

    ログイン、登録、パスワードの再設定、 アカウントのリンクは、Frebase Authentication SDK を使用して再構築されています。 iOS と Android 向けのオープンソース SDK として提供されており、以下のことが可能になります。 Identity Toolkit では不可能な方法でフローを完全にカスタマイズできます。

他にも次のような違いがあります。

  • セッションと移行

    Identity Toolkit と Firebase ではセッションの管理方法が異なるため 認証とは、ユーザーの既存のセッションは アップグレードが必要となり、ユーザーは再度ログインする必要があります。

始める前に

Identity Toolkit から Firebase Authentication に移行する前に、

  1. Firebase コンソールを開き、 Google プロジェクトをインポートして、Identity Toolkit プロジェクトを選択します。

  2. > をクリックします。権限を使用して、 IAM と[管理] ページ。

  3. サービス アカウント] ページを開きます。ここには、作成したサービス アカウントが Identity Toolkit 用に構成されています

  4. サービス アカウントの横にある 件 >鍵の作成。次に、 [Create private key] ダイアログで [Key type] を [JSON] に設定して、 作成:サービス アカウントの認証情報を含む JSON ファイルは、 自動的にダウンロードされます。これは、次のステップで SDK を初期化する際に必要になります。

  5. Firebase コンソールに戻ります。 Auth セクションで [Email Templates] ページを開きます。このページでは アプリのメール テンプレートをカスタマイズします。

    Identity Toolkit では、ユーザーがパスワードの再設定、メールアドレスの変更、 メールアドレスを確認済みの場合、 ユーザーにメールでコードを送信します。 構成したテンプレートに基づいて、Firebase から 追加のアクションが必要です。

  6. 省略可: サーバー上の Firebase サービスにアクセスする必要がある場合は、 Firebase SDK をインストールします。

    1. Firebase Node.js モジュールは、npm を使用してインストールできます。

      $ npm init
      $ npm install --save firebase-admin
      
    2. コード内で、次のコマンドを使用して Firebase にアクセスできます。

      var admin = require('firebase-admin');
      var app = admin.initializeApp({
        credential: admin.credential.cert('path/to/serviceAccountCredentials.json')
      });
      

次に、アプリのプラットフォーム(AndroidiOSウェブ

サーバーと JavaScript

主な変更点

Google 広告のウェブ実装には、この他にも多くの違いがあります。 Identity Toolkit の Firebase。

  • ウェブ セッションの管理

    これまでは、ユーザーが Identity Toolkit ウィジェットを使用して認証するときに、 セッションのブートストラップに使用された Cookie がユーザーに設定された。 この Cookie の有効期間は 2 週間で、ユーザーが Cookie を使用して アカウント管理ウィジェットを使用して、パスワードやメールアドレスを変更できます。一部 サイトの他のすべてのページ リクエストを認証するために、サイトがこの Cookie を使用しています。 他のサイトでは、独自の Cookie を作成するために Cookie を使用しています Cookie 管理システムを使用して行われます。

    Firebase クライアント SDK で Firebase ID トークンを管理できるようになりました Firebase Authentication のバックエンドと連携してセッションを最新の状態に保ちます。 重要なアカウントが変更されると、バックエンドはセッションを期限切れにする パスワードの変更など)が発生したとします。Firebase ID トークンは自動的には生成されません。 設定され、有効期間が 1 時間のみである。これを行わない場合、 1 時間のセッションのみが必要な場合は、Firebase ID トークンは すべてのページ リクエストを検証するための Cookie として使用されます。その代わりに、 リスナーをセットアップする必要があります。 ユーザーがログインしたときや Firebase ID トークンを取得する トークンを検証し、 フレームワークの Cookie 管理システム経由で独自の Cookie を作成できます。

    Cookie のセッション存続期間は、 セキュリティに関するニーズを満たすことができます。

  • ウェブログインフロー

    以前は、ログインしたときにユーザーが accountchooser.com にリダイレクトされていました。 ユーザーが使いたい識別子を学習しました。Firebase 認証 UI のフローは、ログイン方法のリスト(メールアドレスや電話番号など)から始まります。 このオプションでは、ウェブ用の accountchooser.com に移動し、 hintRequest API: Android。また、Firebase ではメールアドレスが不要になりました。 UI です。これにより、匿名ユーザー、カスタム認証ユーザーのサポートが容易になります。 または、メールアドレスが不要なプロバイダからのユーザーです。

  • アカウント管理ウィジェット

    このウィジェットは、ユーザーがメールアドレスの変更、 アカウントと ID プロバイダとのリンクを解除できます。現在は 開発しています。

  • ログインボタン/ウィジェット

    ログインボタンやユーザーカードなどのウィジェットは提供されなくなりました。。 Firebase Authentication API を使用して非常に簡単に構築できます。

  • signOutUrl を使用しない

    firebase.auth.signOut() を呼び出してコールバックを処理する必要があります。

  • oobActionUrl がありません

    メールの送信は Firebase によって処理されるようになりました。この設定は Firebase で設定します。 できます。

  • CSS のカスタマイズ

    FirebaseUI は、マテリアル デザイン ライトのスタイル設定を使用します。 マテリアル デザインのアニメーションが動的に追加されます。

ステップ 1: サーバーコードを変更する

  1. サーバーが Identity Toolkit トークン(2 週間有効)を使用していて、 管理するには、独自のユーザー セッションを使用するようにサーバーを変換し、 セッション Cookie です。

    1. Firebase ID トークンを検証するためのエンドポイントを実装する ユーザーのセッション Cookie を設定しますクライアント アプリが このエンドポイントへの Firebase ID トークン。
    2. 受信リクエストに独自のセッション Cookie が含まれている場合は、 ユーザーが認証済みと見なされます。それ以外の場合は、リクエストを 表示されます。
    3. どのユーザーも既存のログインを失わないようにしたい場合 2 週間待つ必要があります。また、すべての Identity Toolkit トークンが ウェブ アプリケーションのデュアル トークン検証も行う (ステップ 3 で説明します)
  2. 次に、Firebase トークンは Identity Toolkit とは異なるため、 トークン検証ロジックを更新する必要があります。サーバーに Firebase Server SDK をインストールします。または 言語が Firebase Server SDK でサポートされていない場合は、JWT トークン検証ライブラリをダウンロードしてください。 適切にトークンを検証してください。

  3. 上記の更新を最初に行うとき、まだ構成されているコードパスが Identity Toolkit トークンを使用します。iOS アプリまたは Android アプリの場合 ユーザーが新しいアプリをリリースする前に、 新しいコードパスが機能しますユーザーに更新を強制したくない場合、 検証するサーバー検証ロジックをアプリに追加することで、 Firebase SDK と トークンを検証します。ウェブのみを使用する場合や 新しい認証リクエストはすべて したがって、必要なのは Firebase トークンの 確認方法を指定します。

Firebase Web API リファレンスをご覧ください。

ステップ 2: HTML を更新する

  1. アプリに Firebase 初期化コードを追加します。

    1. Firebase コンソールでプロジェクトを開きます。
    2. [概要] ページで [アプリを追加] をクリックし、[Firebase を ウェブアプリ。Firebase を初期化するコード スニペットが表示されます。
    3. 初期化スニペットをコピーしてウェブページに貼り付けます。
  2. FirebaseUI Auth を追加する 追加します。

    <script src="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.js"></script>
    <link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/live/0.4/firebase-ui-auth.css" />
    <!-- *******************************************************************************************
       * TODO(DEVELOPER): Paste the initialization snippet from:
       * Firebase Console > Overview > Add Firebase to your web app. *
       ***************************************************************************************** -->
    <script type="text/javascript">
      // FirebaseUI config.
      var uiConfig = {
        'signInSuccessUrl': '<url-to-redirect-to-on-success>',
        'signInOptions': [
          // Leave the lines as is for the providers you want to offer your users.
          firebase.auth.GoogleAuthProvider.PROVIDER_ID,
          firebase.auth.FacebookAuthProvider.PROVIDER_ID,
          firebase.auth.TwitterAuthProvider.PROVIDER_ID,
          firebase.auth.GithubAuthProvider.PROVIDER_ID,
          firebase.auth.EmailAuthProvider.PROVIDER_ID
        ],
        // Terms of service url.
        'tosUrl': '<your-tos-url>',
      };
    
      // Initialize the FirebaseUI Widget using Firebase.
      var ui = new firebaseui.auth.AuthUI(firebase.auth());
      // The start method will wait until the DOM is loaded.
      ui.start('#firebaseui-auth-container', uiConfig);
    </script>
    
  3. アプリから Identity Toolkit SDK を削除します。

  4. セッション管理に Identity Toolkit ID トークンを使用している場合は、 クライアントサイドで次の変更を行う必要があります。

    1. Firebase で正常にログインしたら、次の方法で Firebase ID トークンを取得します。 firebase.auth().currentUser.getToken() を呼び出しています。

    2. Firebase ID トークンをバックエンド サーバーに送信して検証し、発行する 使用するセッション Cookie です。

      機密情報を扱うときは、セッション Cookie のみに頼らないでください。 認証された編集リクエストをサーバーに送信することもできます。マイページ 追加のクロスサイト リクエスト フォージェリ(CSRF)の提供が必要 保護を強化します。

      フレームワークで CSRF の保護が提供されていない場合、 ログイン ユーザーの Firebase ID トークンを取得し、 getToken() で指定し、各リクエストにトークンを含めます( デフォルトで Cookie も送信されます)。次に、そのトークンを検証し、 セッション Cookie チェックのほかに Firebase Server SDK を使用する 完了したジョブが表示されますこれにより Firebase ID トークンは、 保存され、Cookie には記録されません。

    3. Identity Toolkit トークンは 2 週間有効です。必要に応じて 2 週間続くトークンを発行し続けるか、 アプリのセキュリティ要件に応じて長くしたり短くしたりできます。 ユーザーがログアウトしたら、セッション Cookie を削除します。

ステップ 3: IDP のリダイレクト URL を更新する

  1. Firebase コンソールで [Authentication] セクションを開き、 [Sign-in Method] タブ。

  2. サポートするフェデレーション ログイン プロバイダごとに、次の操作を行います。

    1. ログイン プロバイダの名前をクリックします。
    2. OAuth リダイレクト URI をコピーします。
    3. ログイン プロバイダのデベロッパー コンソールで、OAuth リダイレクトを更新する URI です。

Android

ステップ 1: Firebase をアプリに追加する

  1. Firebase コンソールを開きます。 すでにインポートした Identity Toolkit プロジェクトを選択します。

  2. [概要] ページで [アプリを追加] をクリックし、[Firebase の追加先] をクリックします。 Android アプリ。[Add Firebase] ダイアログで、アプリのパッケージを指定します。 名前と署名証明書フィンガープリントを入力して [Add App] をクリックします。「 次に、google-services.json 構成ファイルがアプリケーションの できます。

  3. 構成ファイルを Android アプリ モジュールのルート ディレクトリにコピーします。この 構成ファイルには、プロジェクトと Google OAuth クライアント情報が含まれています。

  4. プロジェクト レベルの build.gradle ファイル (<var>your-project</var>/build.gradle)を使用するには、アプリのパッケージ名を defaultConfig セクション:

    defaultConfig {
       …..
      applicationId "com.your-app"
    }
    
  5. また、プロジェクト レベルの build.gradle ファイルで、含める依存関係を追加します。 google-services プラグイン:

    buildscript {
     dependencies {
       // Add this line
       classpath 'com.google.gms:google-services:3.0.0'
     }
    }
    
  6. アプリのアプリレベルの build.gradle ファイル内 (<var>my-project</var>/<var>app-module</var>/build.gradle)、 google-services プラグインを有効にするために、次の行を一番下に追加します。

    // Add to the bottom of the file
    apply plugin: 'com.google.gms.google-services'
    

    google-services プラグインは、google-services.json ファイルを使用して構成します。 アプリケーションを Firebase で使用できます。

  7. また、アプリレベルの build.gradle ファイルで、Firebase Authentication を追加します。 :

    compile 'com.google.firebase:firebase-auth:23.0.0'
    compile 'com.google.android.gms:play-services-auth:21.2.0'
    

ステップ 2: Identity Toolkit SDK を削除する

  1. AndroidManifest.xml から Identity Toolkit の構成を削除する 表示されます。この情報は google-service.json ファイルに含まれ、 google-services プラグインで読み込まれます。
  2. アプリから Identity Toolkit SDK を削除します。

ステップ 3: アプリに FirebaseUI を追加する

  1. FirebaseUI Auth を追加する 追加できます

  2. アプリで、Identity Toolkit SDK の呼び出しを次の呼び出しに置き換えます。 FirebaseUI

iOS

ステップ 1: Firebase をアプリに追加する

  1. 次のコマンドを実行して、アプリに Firebase SDK を追加します。

    $ cd your-project directory
    $ pod init
    $ pod 'Firebase'
    
  2. Firebase コンソールを開きます。 すでにインポートした Identity Toolkit プロジェクトを選択します。

  3. [概要] ページで [アプリを追加] をクリックし、[Firebase の追加先] をクリックします。 します。[Add Firebase] ダイアログで、アプリのバンドル ID と [App Store ID] をクリックし、[Add App] をクリックします。「 次に、GoogleService-Info.plist 構成ファイルがアプリケーションの できます。プロジェクトに複数のバンドル ID がある場合、それぞれのバンドル ID には、 固有の Pod を手動で管理できるようにするために、Firebase コンソールで接続する必要がある GoogleService-Info.plist ファイル。

  4. 構成ファイルを Xcode プロジェクトのルートにコピーし、 あります。

ステップ 2: Identity Toolkit SDK を削除する

  1. アプリの Podfile から GoogleIdentityToolkit を削除します。
  2. pod install コマンドを実行します。

ステップ 3: アプリに FirebaseUI を追加する

  1. FirebaseUI Auth を追加する 追加できます

  2. アプリで、Identity Toolkit SDK の呼び出しを次の呼び出しに置き換えます。 FirebaseUI