メニュー

Rate this page:

Thanks for rating this page!

We are always striving to improve our documentation quality, and your feedback is valuable to us. How could this documentation serve you better?

Twilio SMSを使用したアプリケーション検証

Twilioを使用してAndroidの電話番号を検証する

Does your Android application need to verify users' phone numbers using a one time password (OTP)? Using the new Android SMS Retriever API from Google Play Services and the Twilio Programmable SMS API, you can verify phone numbers without requiring a code to be typed in. Your application also won't have to ask for permission to read SMS messages.

Automating this stage in the onboarding funnel for your application could lead to happier end users, less customer support inquiries, and higher conversion rates.

Twilioとは? Twilioでは、世界中のユーザーとSMSメッセージを送受信するための、簡単に使用できるAPIを用意しています。 1回のインテグレーションで、世界中のユーザーに対してテキストメッセージを送信できます。

What does that integration look like to send messages? One line of code to authenticate with Twilio and one line of code to send an SMS message. Want to try it yourself? Hop on over to the Twilio API Explorer, where you can use the Twilio REST API without writing any code.

Want to learn more about sending text messages with Twilio? Try one of the SMS quickstarts for Twilio, such as the Programmable SMS Quickstart for Node.js.

Android用Twilio Verification SDK

このAPIをAuthyと統合するより簡単な方法をお探しですか? Android用Twilio Verification SDKを使用して、AuthyインテグレーションでSMS Retriever APIのすべての利点を享受してください。 こちらのガイドに従ってはじめましょう!

SMS検証をはじめる

Let's get started with your first SMS Verification! There are a couple of things you will need to have to build SMS verification into your application.

開発とテストには、下記のものが必要です:

  • Android Studio (GoogleからAndroid Studioをダウンロードしてください)
  • Twilio Account - create a Twilio account here. Unfortunately, trial accounts can not be used with this API - the message that gets prepended to all trial SMS messages will conflict with the requirements for the SMS Retriever API.
  • SMSを受信できるアクティブな電話番号を持つ、Google Play Service 10.2以上のAndroid電話機。 電話機のGoogle Play Serviceのバージョンは、Settingsアプリケーション内のAppsメニュー配下で確認できます。

上記のものがすべて揃ったら、いよいよコードサンプルに取りかかることができます!

Download the Server Code

ソリューションが稼働できるようにするためにはサーバーが必要になります。 そこでアプリケーション用のバックエンドを提供するクイックスタートサーバーアプリケーションをご用意しました。

Androidのサンプルアプリケーションをダウンロードする

入門用のリファレンス用にGoogleが作成したサンプルアプリケーションもあります。 正しくこれを構成するには、サンプルアプリケーションのREADMEの手順に従うことが必要です。

SMS検証アプリケーションGitHubリポジトリー

ひとくちメモ - Androidアプリケーション内のsensitive.xml文字列値ファイルに追加するWebアプリケーションへのURLが必要になります。 これはWebアプリケーションの稼働が開始するか、クラウド上にデプロイされて初めて入手できます。 また、ngrokのようなlocalhostトンネルを使用して公開インターネット上からアクセス可能なURLを使用することもできます。

幸運なことに、これが動作するようにお膳立てすることこそ、まさに次の一連の手順に他なりません。

サーバーをセットアップする

Our sample server is written in Node.js, so you will need to have Node installed locally or on the server you plan to deploy too. Need to set up Node? Download an installer from the Node.js web site, or use your operating system's package manager.

Nodeのインストールにはnodeのパッケージマネージャーであるnpmがついてきます。 サーバーをダウンロードしてzipを展開した後は、コマンドラインから下記のコマンドを使用して必要となるNodeモジュールをインストールします:

npm install

If you're curious about what modules the server is using (including the Twilio Helper Library for Node), take a look at the package.json file.

サーバーの構成

サーバーのダウンロードが済んだら、いくつか構成値が必要になります。 Node.jsサーバーをご使用の場合は、.env.exampleファイルを.envとしてコピーし、下記の値を入力します。 正しくインストールするには、下記の値すべてが必要になります。

設定値 概要
TWILIO_ACCOUNT_SID The account SID is your primary Twilio account identifier. You will be able to find this value in the Twilio Console.
TWILIO_API_KEY The Twilio SDK uses API Key and Secret pairs to make REST calls to the Twilio API. You can create a new API Key and Secret pair on the API Keys page in the Console.

TWILIO_API_SECRET APIシークレットは、APIキーとシークレットの組の生成時に一度だけ表示されるため、確実にダウンロードしてください。
SENDING_PHONE_NUMBER 電話にSMSメッセージを送信するために使用する検証済の電話番号が必要になります。 ご自身でお持ちの電話番号をTwilioで検証するか、Twilioで購入した電話番号を使用します(日本の電話番号でSMSの送信は行えないため、日本の携帯電話宛にSMSを送信する場合は、必ず米国のTwilio番号を使用してください)。
APP_HASH The Android app hash is very important, as the existence of this hash in the SMS Message is what the SMS Retriever API will look for. See Google's documentation on how to Compute your app's hash string. You can also find it under the Settings menu item in the sample application.
CLIENT_SECRET Matches the Android application to the server - you can set this in the sensitive.xml file in the sample Android application. It must match the server's config value.

サーバーの実行

Run the application using the npm start command.

npm start

アプリケーションは http://localhost:3000/ で実行されるはずです。

公開インターネット上からアクセスできるURLの作成

お使いの携帯電話はlocalhostに直接アクセスできません。 HTTP/HTTPSのトラフィックをlocalhostで実行されているサーバーに送信するngrokのようなツールを使用して、公開インターネット上からアクセスできるURLが必要になります。 Web接続がTwilioのアクセストークンを取得できるようになるよう、HTTPSを使用します。

ngrok http 3000

Another alternative is to deploy this server to the cloud (such as Google App Engine) - you will need to configure the environment variables used above for your cloud provider.

SMS Reciever APIの、Androidアプリケーションへのインテグレーション

You'll also probably need to integrate the SMS Retriever API into your existing Android application, either by replacing your existing verification process, or adding it as a new step. Check out Google's guide for how to Request SMS Verification in an Android App.

Androidアプリケーションの構成

The sample Android application also needs to be configured to communicate with your server. Make sure you have an externally accessible URL for your application first (not localhost). If you need to create an external URL for your server application running on your local computer, download and install ngrok.

Go ahead and open up the application in Android Studio, and then create a sensitive.xml file in the res/values folder.

In the sensitive.xml file, add these values - you will need to replace your-server.com in the below code snippet with your server's domain name or IP address.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="server_client_secret">0000000000</string>
    <string name="server_client_secret_v8">0000000000</string>
    <string name="url_verify">https://your-server.com/api/verify</string>
    <string name="url_request">https://your-server.com/api/request</string>
    <string name="url_reset">https://your-server.com/api/reset</string>
</resources>

You will also need to find and edit the server client secret lines in the sensitive.xml file. Make the secret the same string that you configured on the server.

Running the Android App

セットアップがすべて完了したら、Android Studio上でアプリケーションをビルドして、お使いの電話機で実行しましょう!

Double check that the App Hash (In the menu, under Settings) matches the value you have in your .env file - if it's different, go ahead and change it in .env and restart the server.

Press the Sign Up button at the bottom of the app to get started with the verification process. On the next screen, when you tap the edit text input for the phone number, the Android app will use the hint picker to detect your phone's number, and then offer to fill that in for you.

Android SMS検証アプリケーション 1

Submit(送信)ボタンをクリック後、アプリケーションはサーバーにHTTP POSTリクエストを送信し、それから画面上にプログレスインジケーターが表示され、進行状況を示すトースト(情報通知用のポップアップ)がいくつか表示されます。 アプリケーションが接続に失敗した場合は、Androidアプリケーションのstrings.xmlファイル内のURLが正しいか確認してください。

Android検証アプリケーション 2

アプリケーションとサーバーとの通信

The Android application sends an HTTP POST to the server with an application secret (that the app and the server both share) and a phone number to verify.

サーバーはワンタイムパスワード (OTP) を作成し、これをユーザーの電話番号に関連づけます(キャッシュ内やデータベース内など)。

The server then asks Twilio to send that phone number an SMS message with the OTP and the app hash. The app hash is required so that the SMS Retriever API can look up SMS messages specifically for that application. The SMS Retriever API also requires one of two specific headers at the beginning of the SMS - either:

[#]

または

\u200b\u200b - 不可視のUnicode文字

SMSメッセージの最後には、11文字のアプリケーションハッシュが存在していることが必須になります。 OTPはアプリケーションからのショートメッセージでこれらの2つの必須部分に挟まれた位置であればどこに配置されてもかまいません。

Sample SMS message

[#] Thank you for signing up for the app! Your code is 865235.
K4J3FRDUbDB

一般的な問題とデバッグ

SMS Verification on the Android Device Never Completes

遭遇する可能性のあるもっとも一般的なエラーのひとつは、AndroidアプリケーションのパッケージシグネチャーがSMSメッセージで送信したアプリケーションハッシュと一致しないことです。 この2つが一致しない場合、Androidアプリケーションは受信ボックスからの受信SMSを読み取ることができ図、検証プロセスが完了することはありません。

Double check that App signature has for the Android app matches the hash you set in the configuration variable for the server.

TwilioのトライアルアカウントのSMSでは各メッセージにあらかじめ設定された文字列が先頭に付加され、Androidデバイス上のSMS Retriever APIがメッセージを処理できなくなるため、これを使用している場合も検証プロセスが完了しないことがあります。

SMS Message doesn't come through

他の一般的な種類のエラーとしては、SMSメッセージがいっこうに電話機に送信されないというものです。 これは通常.envファイルの構成値のいくつかが正しくセットアップされていないことを示しています。 サーバーアプリケーションのコンソールログを確認してランタイムエラーが発生していないか確認してください。 またTwilio Debuggerを確認して、エラーがないかどうか確認できます。

次のステップ

すべてがうまく行った場合、AndroidアプリケーションはTwilioのSMSメッセージ経由で電話番号を検証し、すべてがうまく協調動作します。 さてお次は?

他のサーバー言語

今回のクイックスタートではNode.jsを使用しましたが、Java、C#、Ruby、Python、あるいはPHPの方がお好みかもしれません! Twilioではこれらの言語全てで同様にSMSメッセージの送信をサポートしているため、これは素晴らしいことです。 REST APIを使用してSMSメッセージを送信するドキュメントを参照してください。

ワンタイムコードの保存

This quick start is pretty simple - the one time codes are stored in memory, and only accessible by this process. Unfortunately, if you were to restart the server or have more than one server application instance (for instance, behind a load balancer), all of those one-time codes would be lost, and the verification process wouldn't complete.

これらのワンタイムコードはMemcache、Redisのような何らかの永続エンジン、または使い慣れたデータベースで保存した方が良いでしょう。 クイックスタート内で、単にCacheオブジェクト(メモ: 名前は似ていますが、Memcacheではありません)をご自身のストレージエンジンを呼び出すよう置き換えます。

SMSの送信量を増加させる

同時に多くのユーザーのログインが予想される場合は、送信SMSのスループットを向上させるためにCopilotを使用するか、またはショートコードの購入を検討してください。

Rate this page:

ヘルプが必要ですか?

We all do sometimes; code is hard. Get help now from our support team, or lean on the wisdom of the crowd browsing the Twilio tag on Stack Overflow.