徒然エンジニアブログ

徒然エンジニアブログ

理系東大生がプログラミングを中心に様々なことについて情報発信していきます!

【Swift】Firebaseを使ったiOSアプリの開発〜ユーザー認証〜

FirebaseはGoogleが提供しているサービスで,メールやパスワードを使ったログイン機能、リアルタイムデータベース、さらには画像などを保存するストレージなど様々な機能を使うことができます。


前回の記事でFirebaseをiOSアプリを作るための設定をしたのでいよいよ使って行きたいと思います。
読んでいない人はまずこちらからどうぞ!
turedureengineer.hatenablog.com


今回はFirebaseを用いてユーザー認証をしていく方法について解説して行きたいと思います。
ユーザー登録したり、認証してログインなどというのは難しそうに思えますがFirebaseを使うと簡単にできます。

それではみて行きましょう。

ログイン方法を設定する

まずFirebaseコンソールの画面に行きます。
そして左側から「Authentication」を押します。

すると下のようなところに飛ぶので「ログイン方法を設定」というところをクリックします。
f:id:turedureengineer:20190106194220p:plain

すると下のような画面になると思います。
みてわかる通りログイン方法といってもいろいろあります。
メールアドレスとパスワードでログインするオーソドックスなものから、最近増えてきているFacebookTwitterを使ったものなど様々な方法があります。


今回はメールとパスワードを用いたものを使って行きましょう!
f:id:turedureengineer:20190106194342p:plain

「メール/パスワード」というところをクリックすると以下のような画面になるので上のチェックボタンを有効にしてください。
そして保存してください。


下のメールリンクというところは向こうのままで構いません。
f:id:turedureengineer:20190106194728p:plain

ユーザーの新規作成の方法

コードを書いていくときに注意ですがFirebase関連のコードを書くときは必ずそのファイルの先頭にimport Firebaseを書いておきましょう!


以下のコードでできます。
非常に短いですね。さすがFirebaseといったところです。

Auth.auth().createUser(withEmail: "a@gmail.com", password: "abcdef",completion: {(user, error) in
            //エラー処理
            if error != nil{
                print(error!)
                return
            }
            //成功した時
            
})

メールアドレスやパスワードは今回は例なので直で書いちゃってますがもちろん実際のコードではテキストフィールドのものを変数に読み込むなどして変数を書いておいてください。


completion以下が少し見慣れない形ですがここはそれに続く処理を書いておけばいいだけです。


エラーの場合はerrorの中にその内容が入っているので場合分けをして出力させるようにしています。

例えばですが、メールアドレスを"abc"とかにするとエラーが出ます。練習として使う場合は上のように"~@gmail.com"や"~@docomo.ne.jp"としておけばいいです。
実在かどうかは気にしなくていいです。

新規作成に成功したときにそのままログインさせたい時などはその処理を//成功したときというところの下に書けばおっけいです!

うまくユーザーの新規作成に成功するとAuthenticationの画面でこのように見えます。
f:id:turedureengineer:20190106233538p:plain

ログイン方法

これも簡単です。

Auth.auth().signIn(withEmail: "a@docomo.ne.jp", password: "abcdef",completion: {(result, error) in
            //エラー処理
            if error != nil{
                print(error!)
                return
            }
            //成功した時
})

形は新規作成するときとほとんど同じです。
さっきと同じ注意ですがメールアドレスやパスワードには変数のものにしておいてください。
上のものはあくまで例です。