DigitsでSMS認証をサクッと導入(Android Studio編)

# 電話番号認証っていいと思う。

## よくあるユーザー問い合わせ
- アプリ再インストールしたらデータが復元できないんだけど…
    - 前に入力したメアドと違うの入れていませんか？？？
- パスワード忘れちゃったので教えてください
    - あなた、本当にこのアカウントの持ち主ですか？
- どのメールアドレスでサインアップしたか覚えてないんですが…
    - 知らんがな。

**こんな問い合わせは、きっともう来ない**

## 初回特典サービス不正の防止

- リセマラ
- お試し期間の渡り歩き
- ユーザー招待特典の自演

**こんな不正も、もうできない**

## ユーザー登録が簡単

スマホアプリでは、ユーザー登録を認証無しでもできるようにしているのが主流だけど、みんな本当は認証させたい。
SMS認証なら、

- 電話番号を入力する
- SMSが送られてくる
- 認証コードを入力する

**これだけなら、認証必須にしてもいいんじゃないかな？**

# Fabricに登録＆インストール

## Fabricとは

Digitsを内包している、Twitter社のスマホアプリ向けSDK

- Crashlytics(アプリのクラッシュ情報を通知してくれる)
- Twitter認証
- Digits
等々、いろんな機能が使えるキット。

※インストール〜アプリへの組み込みまで至れり尽くせりなのが素晴らしい！

## 登録

https://get.fabric.io/
こちらからどうぞ。

## AndroidStudioのプラグインをインストール

https://fabric.io/downloads
こちらからどうぞ。

# AndroidStudioで導入！

![スクリーンショット 2016-10-27 13.43.35.png](https://qiita-image-store.s3.amazonaws.com/0/82563/036c5dce-82bf-0593-14a2-48d59e5705ab.png)

EmptyActivityで大丈夫。
![スクリーンショット 2016-10-27 13.44.09.png](https://qiita-image-store.s3.amazonaws.com/0/82563/37c0289c-97e0-615f-6390-f45ceacdc358.png)

Fabricプラグインを開く(アカウントとパスワード入力いるかも)
![スクリーンショット 2016-10-27 13.52.17.png](https://qiita-image-store.s3.amazonaws.com/0/82563/71b15238-754a-4a6e-8f2c-66053b720e8d.png)

Nextを押下すると
![スクリーンショット 2016-10-27 13.54.41.png](https://qiita-image-store.s3.amazonaws.com/0/82563/0c7c7141-2fdc-279a-2239-64d942dcdb33.png)

Digitsあった！
![スクリーンショット 2016-10-27 13.55.33.png](https://qiita-image-store.s3.amazonaws.com/0/82563/31aef6b4-6537-71b0-009e-525f9aec77ce.png)

Installを押下
ここは、Create Account

![スクリーンショット 2016-10-27 13.56.14.png](https://qiita-image-store.s3.amazonaws.com/0/82563/6c77f9aa-f054-a550-3a50-b69a8175880d.png)

すると、build.gradleにこれを書いてみたいな表示がでるが、
「Apply」を押下すると、自動でbuild.gradleを書き換えてくれる。

このあと、build.gradleが走って、minSdkVersionが低いとエラーになる。14以上にする。
![スクリーンショット 2016-10-27 14.02.53.png](https://qiita-image-store.s3.amazonaws.com/0/82563/00968671-7cc5-e944-16bb-af52519b4b2e.png)

「back」を押下して、「Sign In with Phone Number」
![スクリーンショット 2016-10-27 14.04.06.png](https://qiita-image-store.s3.amazonaws.com/0/82563/4438433f-6fab-f199-7665-4b176892624a.png)

main_activity.xmlにこれを追加して、サインインボタンを作る。
(クリックしたらクリップボードに入ります)

![スクリーンショット 2016-10-27 14.12.25.png](https://qiita-image-store.s3.amazonaws.com/0/82563/28dd40c8-fe3b-5a43-02f7-03b94f145f03.png)

Next
↓
MainActivity.javaのonCreateにこれを追加する。

![スクリーンショット 2016-10-27 14.13.26.png](https://qiita-image-store.s3.amazonaws.com/0/82563/cce0b30c-1740-a494-9550-d1cf4596a340.png)

↓この辺のimportが必要
import android.util.Log;
import android.widget.Toast;
import com.digits.sdk.android.*;

**なんと、これで完成！**

動かしてみると、

![スクリーンショット 2016-10-27 14.39.43.png](https://qiita-image-store.s3.amazonaws.com/0/82563/f64ad87f-9e6a-a78d-0c72-a05c952414c6.png)

ボタンを押下すると

![スクリーンショット 2016-10-27 14.40.43.png](https://qiita-image-store.s3.amazonaws.com/0/82563/eae06802-bb79-4490-8d28-cfb20bdf1f6b.png)

「国」と「電話番号」を入力すると、SMSに認証コードが届くので、↓に入力！
![digits.png](https://qiita-image-store.s3.amazonaws.com/0/82563/755e153f-e042-02fd-b754-dcbf70ad8c8d.png)

すると、以下がコールバックされるので、

```java:MainActivity.java
            @Override
            public void success(DigitsSession session, String phoneNumber) {
                // TODO: associate the session userID with your user model
                Toast.makeText(getApplicationContext(), "Authentication successful for "
                        + phoneNumber, Toast.LENGTH_LONG).show();
            }
```

session.getId();
これを自分のコンテンツサーバーで管理！！！

**かなり簡単！**


# iOSは？

iOSは、専用のアプリで、CocoaPodsと、.xcodeprojファイルをゴニョゴニョする感じで導入しています。また、気が向いたら投稿しますー。