サーバーで SMS 検証を実行する

電話番号を自動的に確認できるようにするには、クライアントと電話番号の両方を実装する必要があります。 確認フローのサーバー部分で行われます。このドキュメントでは、 サーバー部分を実装します。

電話確認サーバーは次の 3 つのタスクを行います。

  1. ワンタイム コードを含み、 クライアントサイドの SMS Retriever API で想定される形式
  2. ユーザーのデバイスに確認メッセージを送信する
  3. サーバーに返送されたワンタイム コードの確認と完了 バックエンドで必要になる検証後のタスク

アプリとサーバーとのやり取りの詳細は自由に決めることができます。共通 2 つのエンドポイント(1 つはリクエストを受信するエンドポイント)を持つ REST API を公開するというアプローチがあります。 特定の電話番号の確認と SMS 確認メッセージの送信 アプリからワンタイム コードを受け取る 2 つ目のエンドポイントです。

1. 確認メッセージを作成する

サーバーが電話番号の確認リクエストを受け取ったら、まず ユーザーのデバイスに送信する確認メッセージ。このメッセージ 要件:

それ以外の場合は、確認メッセージの内容を自由にお選びいただけます。 メッセージを作成すると、そのメッセージから 1 度だけのメールを 使用します。たとえば、有効な確認メッセージは 次のとおりです。

Your ExampleApp code is: 123ABC78

FA+9qCX9VSu

ワンタイム コードの生成

ワンタイム コードは、使用可能なものであればさまざまな方法で実装できます。 コードをユーザーや電話番号に 紐づけることで サーバーに送り返します。コードは簡単に入力し、 ユーザーが手動でコードを入力しなければならない状況にも対応できます。

ワンタイム コードを実装する方法の一つは、乱数を生成することです。この乱数は、 キーとして格納できます。たとえば、Pending Verifications という 次のようになります。

ID ユーザー 有効期限
123456789... 1234 2017 年 3 月 14 日 1:59

base32 でエンコードされた ID をワンタイム コードとして使用できます。

アプリのハッシュ文字列を計算する

Google Play 開発者サービスはハッシュ文字列を使用して、 アプリに送信できますハッシュ文字列はアプリのパッケージ名で構成されます アプリの公開鍵証明書などですハッシュ文字列を生成するには:

  1. Google Play アプリ署名を使用している場合は、 アプリ署名証明書(deployment_cert.der)を Google Play Console の [アプリ署名] セクション

    次に、アプリ署名証明書を一時キーストアにインポートします。

    keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
    

    APK に直接署名する場合は、この手順をスキップしてください。

  2. アプリ署名証明書(上でインポートした証明書、または上記でインポートした証明書)を取得します。 (小文字の 16 進数文字列として)直接 APK に署名できます。

    たとえば、作成された一時キーストアから 16 進数文字列を取得するには、 次のコマンドを入力します。

    keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
    

    APK に直接署名する場合は、製品版キーストアと 構成します。

  3. 一時キーストアを作成した場合は、それを削除します。

  4. アプリのパッケージ名に 16 進文字列を 1 つずつ追加します。 選択します。

  5. 結合された文字列の SHA-256 合計を計算します。環境変数は必ず SHA-256 を計算する前に、文字列の先頭または末尾の空白文字 合計します。

  6. SHA-256 合計のバイナリ値を Base64 でエンコードします。必要に応じて、 出力形式から SHA-256 の合計を計算できます。

  7. アプリのハッシュ文字列は、Base64 でエンコードされた文字列の先頭 11 文字です あります。

次のコマンドは、アプリの本番環境からハッシュ文字列を計算します。 キーストア:

keytool -exportcert -alias PlayDeploymentCert -keystore MyProductionKeys.keystore | xxd -p | tr -d "[:space:]" | echo -n com.example.myapp `cat` | sha256sum | tr -d "[:space:]-" | xxd -r -p | base64 | cut -c1-11

または、AppSignatureHelper を使用してアプリのハッシュ文字列を取得することもできます。 クラスを使用します。ただし、ヘルパークラスを使用すると、 ハッシュ文字列を取得したら、必ずアプリから削除してください。使用しないでください。 検証メッセージ内でクライアント上で動的に計算されるハッシュ文字列。

2. 確認メッセージを SMS で送信

確認メッセージを作成したら、そのメッセージをユーザーの 任意の SMS システムを使用します。

たとえば、Twilio SMS を使用したアプリの確認を参照してください。 Twilio のデベロッパーサイトを参照してください。

ユーザーのデバイスがこのメッセージを受信すると、メッセージはお客様のデバイスに転送されます 。アプリがワンタイム コードを抽出してサーバーに送り返して、 確認プロセスを完了します。

3. ワンタイム コードが返されたら確認する

通常、電話番号確認サーバーには、それが使用する 2 つ目のエンドポイントがあります。 クライアント アプリからワンタイム コードが返されます。サーバーが このエンドポイントのアプリからワンタイム コードを生成する場合は、次の操作を行います。

  1. ワンタイム コードが有効で、有効期限が切れていないことを確認します。
  2. ワンタイム コードにリンクしたユーザーが電話番号を入力したことを記録します。 確認します。
  3. ワンタイム コードのデータベース レコードを削除するか、 同じコードを再度使用することはできません。

ユーザーの確認ステータスを記録し、 検証は完了です