MBaaSの有名どころであるParseを触ってみた。
色々と出来るのだけども、今回はその中からユーザ管理(の一部)についてまとめてみた。
MBaaSってなに?
スマートフォンアプリの開発に必要な汎用的機能をAPI、SDKで提供しサーバー側のコードを書くことなく、サーバー連携するスマートフォンアプリを効率よく開発出来るようにするクラウドサービス
http://mb.cloud.nifty.com/about.htm
Parseってなに?
2013年にFacebookに買収されたことでも有名になったサービス。
2014年12月には技術ドキュメントを日本語化し提供もしている。
機能的としては、「データ管理」、「Push通知」、「Analytics」などがある。
値段は?
30 APIリクエスト/秒までは無料。
詳細は以下の参考ページを見ると詳しく載っている。
参考:http://dev.classmethod.jp/smartphone/parse-new-pricing/
ユーザ管理
今回述べるのは以下の機能ついて
- ユーザの作成
- メール認証
- ログイン/ログアウト
- パスワードの再設定
上記以外にも、以下の様な機能があるけど今回は割愛。
- ロール
- Facebook連携
- Twitter連携
環境
- iOS
- SDKの管理はcocoapodsを利用
platform :ios, "7.0"
target "parse" do
pod 'Parse', '~> 1.6'
end
initialize
最初に以下を呼び出しておく必要がある。
AppDelegateのapplication:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
で呼んでおくといい。
[Parse setApplicationId:@"あなたのApplication ID" clientKey:@"Client Key"];
Parseで登録したアプリのSettings -> KeysにあるApplication IDとClient Keyを設定する。
ユーザの作成
コードとしては、以下だけでユーザを作成してくれる。
PFUser *user = [PFUser user];
user.username = @"my name";
user.password = @"my pass";
user.email = @"email@example.com"; //optional
//上記以外に自身で以下のように追加することも可能
user[@"phone"] = @"650-555-0000";
[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
if (!error) {
//ユーザの作成に成功
} else {
NSString *errorString = [error userInfo][@"error"];
//アプリの作成に失敗
//エラー内容を見れば理由がだいたい分かる。
}
}];
- usernameとpasswordは必須。
- emailはオプション。
- 上記3種類以外に追加したい場合は、自身で追加することも可能。
作成するとParseの管理画面に以下の様にUserという項目が出来る。
Parseの管理画面からは、ユーザの削除や情報の編集ができる。
メール認証
ユーザが登録したメールアドレスが正しいかどうかのメール認証をおこなうのもすごい簡単。
- Parseの管理画面(Settings -> Email)で「Verify user emails」をYESに設定する。
- ユーザ作成時にemailを設定するようにする。
- この状態でユーザが作成されるが「emailVerified」がfalseの状態。
- 2で指定したemailに確認メールが届く。
- 受信したメール本文にあるリンクをクリックすると「emailVerified」がtrueになる。
エラー
エラーが出るのは以下の様なとき
- すでに同じ名前のusernameが登録されている。
- username xxxx already taken
- すでに同じ名前のemailが登録されている。
- the email address xxx@xxx has already been taken
- emailが正しくない。
- invalid email address
ログイン/ログアウト
ログイン
ログインは以下で行うことが出来る。
[PFUser logInWithUsernameInBackground:@"my name" password:@"my pass"
block:^(PFUser *user, NSError *error) {
if (user) {
//ユーザのログインに成功
} else {
//ユーザのログインに失敗
}
}];
ログインしている状況であれば、以下の様に[PFUser currentUser]
を呼ぶだけでユーザ情報が取得出来る。
PFUser *currentUser = [PFUser currentUser];
if (currentUser) {
//ログイン中
} else {
//ログインしていない
}
ログアウト
ログアウトは以下の1行のみ。
ログアウトをすると、[PFUser currentUser]
はnilを返す。
[PFUser logOut]; //ログアウト
PFUser *currentUser = [PFUser currentUser]; //nilが返ってくる。
パスワードの再設定
パスワードの再設定についても簡単に実装出来る。
[PFUser requestPasswordResetForEmailInBackground:@"email@example.com"];
流れとしては以下。
- ユーザがアカウント作成時に登録したメールアドレスを指定する。
- 上記のコード
- 指定したメール宛てにパスワードの再設定のメールが届く。
- メールの文面は自身でカスタマイズすることが出来る。
- ユーザがメールに書かれている再設定のリンクをクリックし、パスワードを入力する。
自分で実装すると面倒なこのフローをたった1行で実装することが出来る。
最後に
上記のように簡単にユーザ管理周りの実装をすることが出来る。
他にもPush通知やデータ管理が簡単に扱えるので、個人開発であればParseで十分なのではないかなと思う。