しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Parseを使ってiPhoneアプリでユーザー登録&ログインを実現する

クラウドサービスのParseを使って、簡単にiPhoneアプリの会員登録とログインを実現してみようと思います。

初期設定

先日書いた記事を参考にParse上にアプリケーションを作成してAppIdとClientKeyを取得します。

Parse.comを触ってみた - しめ鯖日記

取得したキーを使ってAppDelegateでParseの初期化処理をします。

import UIKit
import Parse
import Bolts

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        
        Parse.enableLocalDatastore()
        
        // Initialize Parse.
        Parse.setApplicationId("APP_ID",
            clientKey: "CLIENT_KEY")
        
        // [Optional] Track statistics around application opens.
        PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)
        
        return true
    }
}

会員登録

ユーザー認証にはPFUserというクラスを使います。
会員登録したい場合はPFUserに値を入れてsignUpInBackgroundWithBlockメソッドを呼び出します。

import UIKit
import Parse

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let user = PFUser()
        user.email = "test@test.com"
        user.username = "username"
        user.password = "password"
        user.signUpInBackgroundWithBlock { _ in
            print("sign up")
        }
    }
}

Parseを見るとユーザーテーブルが作られている事が分かります。
Roleというテーブルも自動で作られている事を見るとユーザーの権限付与も簡単にできそうです。

f:id:llcc:20160109005733p:plain

そのユーザーに紐づくデータを作りたい場合はオブジェクトのプロパティーにユーザーをセットします。

let testObject = PFObject(className: "TestObject")
testObject["user"] = PFUser.currentUser()
testObject.saveInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
    print("Object has been saved.")
}

そのユーザーに紐づくデータを取得したい場合はqueryの条件にcurrentUserをセットします。

let query = PFQuery(className: "TestObject")
query.whereKey("user", containedIn: [PFUser.currentUser()!])
let objects = try? query.findObjects()
print(objects)