Android アプリを Digits から Firebase に移行する

Digits を使用して電話番号でユーザーをログインさせている場合は、アプリを Firebase Authentication に移行する必要があります。今後の電話番号ログイン機能の開発はすべて Firebase で行われ、Digits は 2017 年 9 月 30 日に停止されます。

このページで説明する操作を行うと、現在の Digits ユーザーを中断することなく、Digits から Firebase にアプリを移行できます。

概要

アプリを Digits から Firebase Authentication に移行するには、次の手順を行います。

  1. Digits ユーザー アカウントを Firebase に移行する
  2. Digits SDK を Firebase SDK に置き換える
  3. アクティブな Digits セッションを Firebase に移行する

最初のステップは、アプリや既存のユーザーに影響を与えずにすぐに完了できます。残りの手順は同時に完了する必要があります。

Digits ユーザー アカウントを Firebase に移行する

まず、Fabric デベロッパーのドキュメントに従って、Digits ユーザー アカウントを Firebase に移行します。

アカウントの移行手順を完了すると、すべての Digits ユーザー アカウントを含む Firebase プロジェクトが作成されます。さらに、移行を有効にした後に作成された Digits アカウントは自動的に Firebase に移行されます。

Digits SDK を Firebase SDK に置き換える

次に、移行するアプリで、Digits SDK の呼び出しを Firebase SDK の呼び出しに置き換えます。

Firebase Authentication を使用してアプリに電話番号ログインを追加するには、次のいずれかの操作を行います。

  • UI を備えたドロップイン ソリューションが必要な場合は、FirebaseUI をインストールし、DigitsAuthButton を表示するアクティビティを FirebaseUI の AuthUI アクティビティに置き換えます。次に例を示します。
    startActivityForResult(
        AuthUI.getInstance()
            .createSignInIntentBuilder()
            .setProviders(Arrays.asList(
                new AuthUI.IdpConfig.Builder(AuthUI.PHONE_VERIFICATION_PROVIDER).build(),
                // Other providers you want to support
                // ...
            ))
            .build(),
        RC_SIGN_IN);
    
    これは Firebase Authentication をアプリに追加する最も簡単な方法です。
  • FirebaseUI を使用せずに独自の UI を構築する場合や、既存のログイン UI と統合したい場合には、Firebase SDK をセットアップして電話番号ログインを使用し、Digits コードを次のように変更します。

    • アクティビティのレイアウトで、com.digits.sdk.android.DigitsAuthButton 要素を標準の Button または ImageButton 要素に置き換えます。
    • AuthCallback のロジックを PhoneAuthProvider.OnVerificationStateChangedCallbacks の同等のコードと置き換えます。
    • 次の例のように、電話番号ログインボタンの onClick リスナーで、Digits.authenticate の呼び出しを verifyPhoneNumber の呼び出しに置き換えます。
      PhoneAuthProvider.getInstance().verifyPhoneNumber(
          phoneNumber,        // Phone number to verify
          60,                 // Timeout duration
          TimeUnit.SECONDS,   // Unit of timeout
          mCallbacks);        // OnVerificationStateChangedCallbacks
      

Digits を Firebase に置き換えたら、 build.gradle ファイルから Digits SDK を削除します。

アクティブな Digits セッションを Firebase に移行する

最後に、更新されたアプリのデプロイ後にユーザーが再度ログインする必要がないように、アクティブなユーザー セッションを Digits から Firebase に移行します。

Digits セッションを Firebase セッションに移行するには、Digits Migration Helper SDK を使用して、アクティブ Digits セッションから Firebase 認証トークンを生成します。次に、トークンを使用して Firebase にログインします。最後に、Firebase を使用して正常にログインした後、Digits セッションをクリアします。

  1. Digits Migration Helper の依存関係をモジュール レベルの build.gradle ファイルに追加します。
    compile 'com.google.firebase:firebase-auth:11.0.0'
    compile 'com.firebase:digitsmigrationhelpers:0.1.1'
    
  2. AndroidManifest.xml に Fabric と Digits のキーが含まれていることを確認します。
    <!--You may already have io.fabric.ApiKey entry. Continue using it -->
    <meta-data
        android:name="io.fabric.ApiKey"
        android:value="@string/FABRIC_API_KEY"
        tools:replace="android:value"/>
    <meta-data
        android:name="com.digits.sdk.android.ConsumerKey"
        android:value="@string/CONSUMER_KEY"/>
    <meta-data
        android:name="com.digits.sdk.android.ConsumerSecret"
        android:value="@string/CONSUMER_SECRET"/>
    
  3. アプリまたはメイン アクティビティの onCreate メソッドで、有効な Digits セッションがあるかどうか確認します。存在する場合は、AuthMigrator.migrate を呼び出し、Firebase セッションに変換します。次に例を示します。
    AuthMigrator.getInstance().migrate().addOnSuccessListener(this,
            new OnSuccessListener() {
                @Override
                public void onSuccess(Void authResult) {
                    FirebaseUser u = FirebaseAuth.getInstance().getCurrentUser();
                    if (u != null) {
                        // Either a user was already logged in or token exchange succeeded
                        Log.d("MyApp", "Digits id preserved:" + u.getUid());
                        Log.d("MyApp", "Digits phone number preserved: " + u.getPhoneNumber());
                    } else {
                        // No tokens were found to exchange and no Firebase user logged in.
                    }
                }
            }).addOnFailureListener(this,
            new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    // Error migrating Digits token
                }
            });
    
    呼び出しが正常に完了すると、Digits セッションが Firebase セッションに変換され、元の Digits セッションが削除されています。
  4. 省略可: Digits セッションが移行されたことを記録します。すでに完了している場合には、条件付きで前の手順をスキップします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。