ちろる

理系大学生が自由気ままに

iOSでFirebase入門 その1 サインアップとサインイン

Firebaseとは

Googleが提供してるサーバー処理を楽に行なってくれるmBaaS。
※ mBaaSは「Backend as a Service」の略で、スマホ向けのウェブアプリ機能を提供するサービスのこと。
(Firebaseについてわかってきたら追記予定。

プロジェクトのスタートアップ

Xcodeでプロジェクトを作成したら、Bundle Identifierの値をコピーしておく。Firebaseのページからプロジェクトの追加する。

先ほどコピーしたBundle Identifireをここに貼り付ける。
以降しばらくXcodeのプロジェクトとFirebaseのプロジェクトをリンクする手順が示されるのでそれに沿って進める。
f:id:tsupiano:20181125221917p:plain

ここまででとりあえず、XcodeのプロジェクトでFirebaseを使えるようになっているはず。

サインインとサインアップ

Firebaseではアカウント管理を簡単に行うことができる。また、メール、電話認証、GoogleFacebookTwitterなど様々なプロバイダ認証が行える。ここではもっとも単純(そうな)メールでの認証を行なってみる。

まず、Firebase/Authをpod installしておく。

pod ‘Firebase/Auth’

サインアップ部分。

@IBAction func signUpButtonTapped() {
        // "in"以下で完了時に実行される処理を記述。authResultかerrorに値が代入されている。
        Auth.auth().createUser(withEmail: emailTextField.text!, password: passwordTextField.text!) { (authResult, error) in
            if let error = error {
                self.statusLabel.text = "Creating the user failed! \(error)"
            }
            // authResultからユーザー情報を取得できる。
            if let user = authResult?.user {
                // user.mailとすることでメールアドレスが取得できる。
                self.statusLabel.text = "user : \(String(describing: user.email)) has been created successfully."
            }
        }
    }

authResult.userではメール以外でも下記の情報が管理できるらしい。

user.getUid(); // UID(ユーザー一意のID)
user.getDisplayName(); // 表示名
user.getEmail(); // E-mail
user.getPhotoUrl(); // プロフ用画像URL
user.getProviders(); // プロバイダ情報
user.isAnonymous(); // true:匿名ユーザー

次にサインイン。

@IBAction func signInButtonTapped() {
        Auth.auth().signIn(withEmail: emailTextField.text!, password: passwordTextField.text!) { (authResult, error) in
            if let error = error {
                self.statusLabel.text = "Login failed. error: \(error)"
            }
            if let user = authResult?.user {
                self.statusLabel.text = "user: \(String(describing: user.email)) has been signed in successfully."
            }
        }
    }
}

なお、登録されているユーザー情報はFirebaseのコンソール(Webサイト側のやつ)の開発->Authentificationからみることができる。