mBaaSはサーバサイドの仕組みになりますので、どういったものなのかは一度体験してみないと分かりづらいでしょう。そこで今回はニフティクラウド mobile backendを使ったデモアプリの紹介です。各機能ごとにミニマムにまとめてありますのでコードを見ればすぐに理解できるかと思います。
これまでのデータストア、Facebook認証、ファイルストアに続いてTwitter認証を解説します。
Twitter認証アプリ
認証機能は基本、IDとパスワードによるものですが他にも幾つかあります。
- Facebook認証
- Twitter認証
- Google+認証
- メールアドレス/パスワード認証
今回のその中でもよく使われるであろうTwitterを使った認証機能ついて紹介します。認証してTodoリストを編集できる、そんなシンプルなアプリです。リポジトリはmoongift/NCMBiOSTwitterにあります。まずはリポジトリをクローンします。
$ git clone git@github.com:moongift/NCMBiOSTwitter.git
利用の際にはCocoaPodsを使いますのでインストールします。
$ [sudo] gem install cocoapods $ pod install
終わったら NCMBiOS_Twitter.xcworkspace を開きます。
Fabricを起動する
Twitterでは最近各種SDKの配布に際してFabricを使うようになっています。まずFabricのサイトへ行き、ダウンロードします。
アプリをダウンロードしたら起動します。そしてNCMBiOS_Twitter.xcworkspaceを指定します。
そしてKitはTwitterを選択します。
途中、XcodeのBuild PhasesのRun Scriptに対して設定するよう求められますので、そのまま貼り付けて実行します。
最終的にInstalledになればOKです。
Twitterアプリを登録する
次にTwitterアプリを登録します。Twitter Appsにて登録できます。
Callback URLの設定とSign in with Twitterの有効化が必要なようです。
発行されたTwitterのコンシューマーキーとシークレットキーを NCMBiOS_Twitter/Settings.swift
に記述します。
// コメントは外してください let kTwitterConsumerKey = "コンシューマーキー" let kTwitterConsumerSecret = "シークレットキー"
mBaaSの設定を行う
続いてmBaaSの管理画面にてアプリ設定>SNS連携にあるTwitter連携で先ほど取得したコンシューマーキーを入力してください。
Xcodeの設定
続いてXcodeの設定を行います。 NCMBiOS_Twitter/Settings.swift
の上にあるアプリケーションキー、クライアントキーを指定します。
// アプリケーションキー let kNCMBiOSApplicationKey = "YOUR_APPLICATION_KEY" // クライアントキー let kNCMBiOSClientKey = "YOUR_CLIENT_KEY"
と書かれていますので、ニフティクラウド mobile backendのアプリケーションキーとクライアントキーに変更してください。アプリケーションキーとクライアントキーはmBaaSの管理画面より取得ができます。
アプリの実行
ここまでくれば準備は完了しましたのでアプリをビルドしてみます。完了するとTwitterでログインのラベルが表示されます(省略されているかも知れません)。
タップするとモーダルウィンドウが表示されてTwitter認証が表示されます。
認証が完了するとログインが完了して、Todoアプリが使えるようになります。
タスクの追加、削除などが可能です。
mBaaSを使っているところ
今回の処理ではTodoデータの保存についてもmBaaSを使っています。そしてFacebook認証は次のように行っています。
@IBAction func tappedLoginButton(sender: AnyObject) { NCMBTwitterUtils.logInWithBlock { (user: NCMBUser!, error: NSError!) -> Void in if let u = user { if u.isNew { print("Twitterで登録成功") 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 { print("Twitterでログイン成功: \(u)") self.performSegueWithIdentifier("unwindFromLogin", sender: self) } } else { print("Error: \(error)") if error == nil { print("Twitterログインがキャンセルされた") } else { print("エラー: \(error)") } } } }
処理としては NCMBTwitterUtils.logInWithBlock を実行しているのみで、後はSDK側で処理を行っています。ログインしていれば NCMBUser.currentUser() でログインユーザが取得できます。
mBaaSを使えばこのように簡単にTwitter認証が実現できます。ソーシャルとの連携を行うことで写真をアップロードしたり、ステータスを投稿するなどバイラル的にアプリを広げる仕組みが実現できます。ぜひコードを参考にmBaaSを使ってみてください。