イー・エージェンシーはマーケティングデータ活用でビジネス課題を解決するプロフェッショナル

【Firebase】Firebase Authenticationとは?(3)SMS認証

この記事をシェア

Firebase Authentication の SMS 認証

以前、Firebase Authentication の Google 認証を紹介しましたが、今回は SMS 認証について紹介してみようと思います。

認証の流れとしては、まずユーザーの電話番号に SMS を送信します。

SMS に確認コードが書かれているので、ユーザーはそのコードをアプリに入力します。

アプリはそのコードを Firebase に送ることで、Firebase ユーザーが作成されます。

機能の有効化

Firebase コンソールを開き、画面左のメニューから「Authentication」を選択して下さい。

「ログイン方法」タブを選択し、「ログイン プロバイダ」の一覧から「Google」を選択します。

「有効にする」をオンにして、保存ボタンを押します。

SMS 認証の動作確認には実機が必要となりますが、テスト用の電話番号のところに電話番号と確認コードを入力しておくことで、エミュレータで動作テストすることができます。

その場合、SMS は届かないので、確認コードはここで設定したものを使います。

実装

アプリに「電話番号」の入力欄を用意して下さい。

ユーザーがボタンを押したときのコールバックなどで、以下の処理を実行すると、ユーザーの電話に SMS が送信されます。

PhoneAuthProvider.getInstance().verifyPhoneNumber(phoneNumber, 60, TimeUnit.SECONDS, this, mCallbacks);

verifyPhoneNumber 関数に、電話番号の文字列を渡します。

なお、電話番号は国際電話の形式 (+(国番号)(番号))にする必要があります。
(例. 090-1234-5678 の場合は、+819012345678)

また、リクエストの処理の結果を受け取るコールバックを以下のように実装します。

private PhoneAuthProvider.OnVerificationStateChangedCallbacks mCallbacks;
private String mVerificationId;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    mCallbacks = new PhoneAuthProvider.OnVerificationStateChangedCallbacks() {
        @Override
        public void onVerificationCompleted(PhoneAuthCredential credential)
        {
            Log.d(TAG, "onVerificationCompleted:" + credential);
            signInWithPhoneAuthCredential(credential);
	}
        @Override
        public void onVerificationFailed(FirebaseException e)
        {
            Log.w(TAG, "onVerificationFailed", e);
        }
        @Override
        public void onCodeSent(String verificationId, PhoneAuthProvider.ForceResendingToken token)
        {
            Log.d(TAG, "onCodeSent:" + verificationId);
            mVerificationId = verificationId;
        }
    };
}

onCodeSent メソッドは、ユーザーが指定した電話番号に SMS が送られた際に呼ばれます。

これが呼ばれた時、アプリでは確認コードを入力するための入力欄を表示して、ユーザーからの入力を待機します。

onVerificationCompleted メソッドは、確認コードを送信せずに即座に認証が完了するケース (即時確認) と、端末が確認コードを受け取った際に自動的に認証が実行されるケース (自動取得) において呼ばれます。

通常は、onCodeSent メソッドが呼ばれます。

確認コード入力

ユーザーがSMSで受け取った確認コードを、アプリに入力してもらいます。
ボタンを押したコールバックなどで、以下の処理を実行します。

PhoneAuthCredential credential = PhoneAuthProvider.getCredential(mVerificationId, code);
signInWithPhoneAuthCredential(credential);
private void signInWithPhoneAuthCredential(PhoneAuthCredential credential) 
{
    Task<AuthResult> task = mAuth.signInWithCredential(credential);
    task.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
        @Override
            public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()) {
                Log.d(TAG, "signInWithCredential : success");
            } else {
                Log.w(TAG, "signInWithCredential : failure", task.getException());
            }
        }
    });
}

signInWithCredential 関数が成功すると、Firebase にユーザーが作られています。

作られたユーザーは、Firebase コンソールの「Authentication」の「ユーザー」画面で確認できます。

識別子が電話のマークになっています。

いかがでしたか?イー・エージェンシーでは、Google アナリティクス 360 やサポートをご契約のお客様を対象に、Google アナリティクス for Firebase の導入支援を行っております。
また、アプリとWebのクロスプラットフォーム分析ができるGoogle アナリティクス 4 プロパティ(GA4)の導入支援も行っております。
まずは下記よりお気軽にお問い合わせください。

Google アナリティクス for Firebase ・Google アナリティクス 4 プロパティ(GA4) の導入に関するお問い合わせはこちら

関連リンク

【Firebase】Firebase Authenticationとは?(1)ユーザー管理
【Firebase】Firebase Authenticationとは?(2)Google認証
【Firebase】Firebase Authenticationとは?(4)Firebase UI

この記事をシェア

この記事を書いた人

アバター

広報・PR・マーケティング担当

このライターが書いた記事を見る

私たちは、データを活用した成果貢献のための支援を行っております。
サービスについてお気軽にご相談・お問い合わせください。

資料ダウンロード

デジタルマーケティングに活用いただける様々な資料を
ダウンロードいただけるようご用意しました。

ご相談・お問い合わせ

私たちは、貴社のビジネス成長のためのデータ活用を支援いたします。
支援内容についてはお気軽にご相談・お問い合わせください

このページの先頭へ