ニフクラmBaaSお役立ちブログ

スマホアプリ開発にニフクラmBaaS。アプリ開発に役立つ情報をおとどけ!

mBaaSを使ったデモアプリの紹介(Facebook認証編)

mBaaSはサーバサイドの仕組みになりますので、どういったものなのかは一度体験してみないと分かりづらいでしょう。そこで今回はニフティクラウド mobile backendを使ったデモアプリの紹介です。各機能ごとにミニマムにまとめてありますのでコードを見ればすぐに理解できるかと思います。

前回のデータストアに続いて、今回はFacebook認証機能を解説します。

Facebook認証アプリ

認証機能は基本、IDとパスワードによるものですが他にも幾つかあります。

  • Facebook認証
  • Twitter認証
  • Google+認証
  • メールアドレス/パスワード認証

今回のその中でもよく使われるであろうFacebookを使った認証機能ついて紹介します。認証してTodoリストを編集できる、そんなシンプルなアプリです。リポジトリはmoongift/NCMBiOSFacebookにあります。まずはリポジトリをクローンします。

$ git clone git@github.com:moongift/NCMBiOSFaceook.git

利用の際にはCocoaPodsを使いますのでインストールします。

$ [sudo] gem install cocoapods
$ pod install

終わったら NCMBiOS_Facebook.xcworkspace を開きます。

設定を変更する

Xcodeが開いたら NCMBiOS_Todo/Settings.swift を開きます。

// アプリケーションキー
let kNCMBiOSApplicationKey = "YOUR_APPLICATION_KEY"
// クライアントキー
let kNCMBiOSClientKey = "YOUR_CLIENT_KEY"

と書かれていますので、ニフティクラウド mobile backendのアプリケーションキーとクライアントキーに変更してください。アプリケーションキーとクライアントキーはmBaaSの管理画面より取得ができます。

Facebookアプリを作成する

続いてFacebookアプリを作成します。Facebook Developersで進めていきます。

クイックスタートに沿って進めてもらっても結構ですし、App IDだけとれれば止めても大丈夫です。

まず設定画面で Contact Email を入力してください。

プラットフォームにiOSがない場合は追加してください。入力するのはBundle IDとSingle Sign onのチェックになります。

次にStatusをPublicにします。画面上にあるスイッチをオンにします。

確認が出ますのでConfirmを押してください。

mBaaSの設定

続いてmBaaSの管理画面にてアプリ設定>SNS連携にあるFacebook連携で先ほど取得したApp IDを入力してください。

Xcodeの設定

Supporting Files/info.plistがありますので、開きます。

そしてURL Schemasを fb(App ID)の形式にし、FacebookAppIDとFacebookDisplayNameを変更します。

アプリの実行

ここまでくれば準備は完了しましたのでアプリをビルドしてみます。完了するとFacebookでログインのラベルが表示されます。

タップするとSafariに遷移してFacebookのログイン画面になります。

そしてアプリとの接続確認が出ますのでOKをタップします。

そうすると認証が完了して、アプリに戻る確認が出ます。開くをタップします。

そうするとログインが完了していますので、Todoアプリが使えるようになります。

タスクの追加、削除などが可能です。

mBaaSを使っているところ

今回の処理ではTodoデータの保存についてもmBaaSを使っています。そしてFacebook認証は次のように行っています。

@IBAction func tappedLoginButton(sender: AnyObject) {
    NCMBFacebookUtils.logInWithReadPermission(["email"], block: { (user: NCMBUser!, error: NSError!) -> Void in
        if error == nil {
            print("会員登録後の処理")
            // ACLを本人のみに設定
            let acl = NCMBACL(user: NCMBUser.currentUser())
            user.ACL = acl
            user.saveInBackgroundWithBlock({ (error: NSError!) -> Void in
                if error == nil {
                    print("ACLの保存成功")
                } else {
                    print("ACL設定の保存失敗: \(error)")
                }
                // 手動でセグエを実行
                self.performSegueWithIdentifier("unwindFromLogin", sender: self)
            })
        } else {
            if error.code == NCMBErrorFacebookLoginCancelled {
                print("Facebookのログインがキャンセルされました: \(error)")
            } else {
                print("キャンセル以外のエラー: \(error)")
            }
        }
    })
}

処理としては NCMBFacebookUtils.logInWithReadPermission を実行しているのみで、後はSDK側で処理を行っています。ログインしていれば NCMBUser.currentUser() でログインユーザが取得できます。


mBaaSを使えばこのように簡単にFacebook認証が実現できます。ソーシャルとの連携を行うことで写真をアップロードしたり、ステータスを投稿するなどバイラル的にアプリを広げる仕組みが実現できます。ぜひコードを参考にmBaaSを使ってみてください。

ニフティクラウドmobile backend mbaas ご紹介 概要資料