[iOS] Fabric 入門 #9 Digits で SMS 認証を行う

2015.02.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Digits とは

前回までは Twitter サービスに関する機能について触れてきましたが、今回は Digits を触ってみたいと思います。

Digits はアプリに SMS 認証機能を組み込むことができるサービスです。Fabric の Twitter Kit フレームワークを入れるだけで利用することができます。

SMS 認証のメリット

アカウント登録が必要なアプリにおいて、メールアドレスとパスワードの入力はユーザーにとっては面倒な作業です。Digits を利用することで、アカウント登録のフローをもう少しシンプルにすることができます。Digits では、以下のような流れでアカウント登録を行うことができます。

  1. 電話番号を入力する
  2. SMS に認証コードが届く
  3. 認証コードを入力する

SMS のメッセージはプッシュ通知で届くため、アプリを終了することなく認証コードが確認できます。ですので、アプリを起動したままでアカウント登録フローを完了することができます。

実行環境

今回試した実行環境は以下の通りです。

  • Mac OS X 10.10.2
  • Xcode 6.1.1 (6A2008a)
  • Fabric 1.1.0
  • Twitter Kit 1.2.0

Digits を利用するために必要な作業

Digits を利用するためには、まず Fabric の開発者アカウント登録が必要です。以下の記事にまとめていますので、ご参照ください。

上記と同様、アプリの Xcode プロジェクトに Fabric SDK と Twitter Kit のインポートまで行いましょう。

Digits の SMS 認証処理を実装する

それでは実装します。適当な View Controller を以下のように実装してください。

#import "ViewController.h"
#import <TwitterKit/TwitterKit.h>

@interface ViewController ()

@property (weak, nonatomic) DGTAuthenticateButton *digitsButton;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    Twitter *twitter = [Twitter sharedInstance];
    [twitter startWithConsumerKey:@"YOUR_CONSUMER_KEY" consumerSecret:@"YOUR_CONSUMER_SECRET"];

    DGTAuthenticateButton *digitsButton =
    [DGTAuthenticateButton buttonWithAuthenticationCompletion:^(DGTSession *session, NSError *error) {
         if (error) {
             NSLog(@"Error : %@", error);
         } else {
             NSLog(@"UserId : %@\nPhoneNumber : %@", session.userID, session.phoneNumber);
             self.digitsButton.hidden = YES;
         }
     }];
    digitsButton.center = self.view.center;
    self.digitsButton = digitsButton;
    [self.view addSubview:digitsButton];
}

@end

これだけで認証が行えます!

SMS 認証してみる

アプリの実装が終わりましたので、早速試してみましょう。実行すると次のように認証ボタンが表示されます。

digits01

「電話番号を使用する」をタップすると、モーダルで電話番号入力画面が表示されます。

digits02

電話番号入力後、数秒待つと SMS メッセージが送信されます。

digits03

SMS メッセージに記載されている認証コードを入力すると、アカウント作成が完了します。ログに新規発行されたユーザーIDと登録時に使用した電話番号が表示されるはずです。

digits04

あとはこのユーザーIDをサーバー (自分で作成する or mBaaS を利用するなど) に登録するだけです。

エラーが発生したときは…

今回初めて Digits に触れたわけですが、認証処理でエラーが発生して先に進めないことがありました。

digits05

結論から言うと、時間を空けたら解決しました!!恐らくサーバーエラーだったんでしょうか…。試してみて、同じような現象が発生した方はちょっと寝かせたほうが良いかもしれません(?)。

まとめ

ということで、Fabric の目玉機能である Digits を試しました。Digits に関わる機能の実装はたったの2行です!こんなに短いのに、セキュアなアカウント登録処理が導入できるのはかなり魅力的ですよね。これだけでアカウント登録処理に使うのも良し、既存の認証システムと絡めるも良しですね!

参考