LoginSignup
34
34

More than 5 years have passed since last update.

[Parse] 認証を試してみる

Last updated at Posted at 2014-01-13

Parse は モバイルアプリに特化したBaaS(Backend as a Service) の一種です。

100万リクエスト/月 までのAPIリクエスト/プッシュ送信が無料なのでお試しで使ってみようという魂胆です。

とりあえず時間がないので今回は認証機能のみです。

Android や Xamarin(C#) でも使えるみたいですが、iOS(Objective-C)でいきます。

kobito.1389613729.383178.png

ParseSDK セットアップ

SDKインストール

いつもどおりcocoapodsからインストールします。

ParseSDKを初期化

AppDelegate.m

#import <Parse/Parse.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [Parse setApplicationId:@"application_id" clientKey:@"client_key"];

    return YES;
}

application_idclient_keyは parse.com 上のAppの値を使用します。

ソーシャルログインの設定

Facebookも似たようなものだったのでTwitterのみです。

事前に https://dev.twitter.com/apps でアプリケーションを登録しておく必要があります。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    [Parse setApplicationId:@"application_id" clientKey:@"client_key"];

    // dev.twitter.com で登録した`Consumer Key`と `Consumer Secret` を設定
    [PFTwitterUtils initializeWithConsumerKey:@"consumer_key" consumerSecret:@"consumer_secret"];

    return YES;
}

Parseにも設定

parse.com にも同様の設定をします。
スクリーンショット-2014-01-14-1.04.52.png

parse.com > Dashboard > アプリ名 > Settings > User authentication で設定できます。

ログイン処理

ログインチェック

ログイン済みかどうかを調べます。

- (void)someAction
{
    if ([PFUser currentUser]) {
        // ログイン済み
    } else {
        // 未ログイン
    }
}

ログインビューを表示

- (void)someAction
{
    // ログインビューコントローラーを生成
    PFLogInViewController *logInViewController = [[PFLogInViewController alloc] init];
    logInViewController.delegate = self;

    // サインアップビューコントローラーを生成
    PFSignUpViewController *signUpViewController = [[PFSignUpViewController alloc] init];
    signUpViewController.delegate = self;

    // サインアップをログインビューから表示されるようにする。
    [logInViewController setSignUpController:signUpViewController];

    // 表示される要素を指定(Twitter, ログインキャンセル、サインアップ)
    [logInViewController setFields:(PFLogInFieldsTwitter|PFLogInFieldsDismissButton|PFLogInFieldsSignUpButton)];
}

あとは プロトコル PFLogInViewControllerDelegate, PFSignUpViewControllerDelegate を実装して、loginViewController を表示すればOKです。

ログイン

(ミスってFacebookもでております…)
iOSシミュレータのスクリーンショット 2014.01.14 1.01.11.png

Twitter

iOSシミュレータのスクリーンショット-2014.01.14-1.01.23.png

サインアップ

iOSシミュレータのスクリーンショット-2014.01.14-1.01.18.png

レイアウトのカスタマイズはサブクラスから上書きして変更します。

実際に登録してみる

実際に登録すると、parse.com 上に反映されます。
名称未設定-1.png

手動ログイン

準備されたViewControllerを使わない方法もいい感じでした。

ログイン

[PFUser logInWithUsername:(NSString *) password:(NSString *)]

登録

PFUser *user = [PFUser user];
user.username = @"name";
user.password = @"pass";

[user signUpInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (!error) {
        
    } else {
        
    }
}];

Twitterログイン

[PFTwitterUtils logInWithBlock:(PFUser *user, NSError *error)block]

既存アカウントとTwitterアカウントの接続

[PFTwitterUtils linkUser:(PFUser *) block:^(BOOL succeeded, NSError *error)block]

なんとなく触ってみて

とりあえずログインはすごく楽でした。
今回は触れてないですが、PFObject周りがすごく良さそうな感じです。

PFObject はスキーマレスでKeyValueペアなデータ型なのですが、SQLっぽくカラムを指定してParseからデータを取得できる模様。

登録も楽で例えば PFUser に電話番号を追加したい時は

PFUserPFObject のサブクラス

PFUser *user = [PFUser user];
user[@"phone"] = @"080-9999-9999";

なんて書いて保存すれば保存できてしまうのです。
パフォーマンスがどうだか知りませんけど、楽ですねー。
(Facebookに買収されるぐらいだから大丈夫でしょうけど。)

ビジネスロジックも parse.com 上で実行できる仕組み(Clound Code)があったり、すごく良さげな印象でした!
まさにBaaS!といった感じで、フロントエンドに集中できていい感じがします。
(悲しい事に所詮はフロントしか誰も見ないんですよね笑)

ホスティング機能もあるので、小ぶりなプロジェクトやらはバックエンドをParseに任せてフロントだけBackboneやAngularJSで作るのもアリなのかなと少し思ったり。

オープンソースBaaSのHeliosも触ってみたいですね。

34
34
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
34