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を使ってみてください。