電話番号を自動的に確認できるようにするには、クライアントと電話番号の両方を実装する必要があります。 確認フローのサーバー部分で行われます。このドキュメントでは、 サーバー部分を実装します。
電話確認サーバーは次の 3 つのタスクを行います。
- ワンタイム コードを含み、 クライアントサイドの SMS Retriever API で想定される形式
- ユーザーのデバイスに確認メッセージを送信する
- サーバーに返送されたワンタイム コードの確認と完了 バックエンドで必要になる検証後のタスク
アプリとサーバーとのやり取りの詳細は自由に決めることができます。共通 2 つのエンドポイント(1 つはリクエストを受信するエンドポイント)を持つ REST API を公開するというアプローチがあります。 特定の電話番号の確認と SMS 確認メッセージの送信 アプリからワンタイム コードを受け取る 2 つ目のエンドポイントです。
1. 確認メッセージを作成する
サーバーが電話番号の確認リクエストを受け取ったら、まず ユーザーのデバイスに送信する確認メッセージ。このメッセージ 要件:
- 140 バイト以下にしてください
- クライアントがサーバーに送り返すワンタイム コードを含めます。 確認フローを完了する( ワンタイム コードの生成)
- アプリを識別する 11 文字のハッシュ文字列を指定します( アプリのハッシュ文字列を計算する
それ以外の場合は、確認メッセージの内容を自由にお選びいただけます。 メッセージを作成すると、そのメッセージから 1 度だけのメールを 使用します。たとえば、有効な確認メッセージは 次のとおりです。
Your ExampleApp code is: 123ABC78FA+9qCX9VSu
ワンタイム コードの生成
ワンタイム コードは、使用可能なものであればさまざまな方法で実装できます。 コードをユーザーや電話番号に 紐づけることで サーバーに送り返します。コードは簡単に入力し、 ユーザーが手動でコードを入力しなければならない状況にも対応できます。
ワンタイム コードを実装する方法の一つは、乱数を生成することです。この乱数は、 キーとして格納できます。たとえば、Pending Verifications という 次のようになります。
ID | ユーザー | 有効期限 |
---|---|---|
123456789... | 1234 | 2017 年 3 月 14 日 1:59 |
base32 でエンコードされた ID をワンタイム コードとして使用できます。
アプリのハッシュ文字列を計算する
Google Play 開発者サービスはハッシュ文字列を使用して、 アプリに送信できますハッシュ文字列はアプリのパッケージ名で構成されます アプリの公開鍵証明書などですハッシュ文字列を生成するには:
Google Play アプリ署名を使用している場合は、 アプリ署名証明書(
deployment_cert.der
)を Google Play Console の [アプリ署名] セクション次に、アプリ署名証明書を一時キーストアにインポートします。
keytool -importcert -file deployment_cert.der -keystore temporary.keystore -alias PlayDeploymentCert
APK に直接署名する場合は、この手順をスキップしてください。
アプリ署名証明書(上でインポートした証明書、または上記でインポートした証明書)を取得します。 (小文字の 16 進数文字列として)直接 APK に署名できます。
たとえば、作成された一時キーストアから 16 進数文字列を取得するには、 次のコマンドを入力します。
keytool -exportcert -keystore temporary.keystore -alias PlayDeploymentCert | xxd -p | tr -d "[:space:]"
APK に直接署名する場合は、製品版キーストアと 構成します。
一時キーストアを作成した場合は、それを削除します。
アプリのパッケージ名に 16 進文字列を 1 つずつ追加します。 選択します。
結合された文字列の SHA-256 合計を計算します。環境変数は必ず SHA-256 を計算する前に、文字列の先頭または末尾の空白文字 合計します。
SHA-256 合計のバイナリ値を Base64 でエンコードします。必要に応じて、 出力形式から SHA-256 の合計を計算できます。
アプリのハッシュ文字列は、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 つ目のエンドポイントがあります。 クライアント アプリからワンタイム コードが返されます。サーバーが このエンドポイントのアプリからワンタイム コードを生成する場合は、次の操作を行います。
- ワンタイム コードが有効で、有効期限が切れていないことを確認します。
- ワンタイム コードにリンクしたユーザーが電話番号を入力したことを記録します。 確認します。
- ワンタイム コードのデータベース レコードを削除するか、 同じコードを再度使用することはできません。
ユーザーの確認ステータスを記録し、 検証は完了です