中安佑一(69)9595件のシェア(ちょっぴり話題の記事)この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。はじめにモバイルアプリサービス部の中安です。触って色々と試しています。Firebaseを絡めた会員機能をもったiOSアプリを作る前提の実装ベースで書いていきます。書きますが、何かのお役に立てば幸いです。準備さて、この記事はFirebaseプロジェクトの作成は終わっているXcode側ではFirebaseSDKの組み込みなどが終わっているという前提で書いていきます。このあたりがまだという方は、ドキュメントを参照してくださいませ。鉛筆のアイコンで編集画面を開きます。有効にしたら保存します。下準備としてはこれくらいでしょうか、簡単ですねぇ。サインアップ「サインアップ」は言わずもがな「新規アカウント登録」のことです。多くのサービスでは下図のような手順で新規アカウント登録が行われることが多いと思います。複雑に考えずに実装ができます。前提まず、以下のようなビューコントローラを作っておきます。}}ストーリーボードには、上図の一番左にある画面のように各部品がレイアウト配置してあるものとします。エラーがあったときにその内容を表示するようなメソッドを用意しておくといいかもしれません。今回は簡易的なエラーダイアログで出すようにします。Firebaseに処理を投げることにします。「登録しますか?」などのダイアログなどは今回つけない前提です。}}なかなか長ったらしいソースコードになったので分割して話します。メソッドがあるので、それを呼び出すだけです。最低限の情報であるメールアドレスとパスワードのみを渡します。成功すると結果オブジェクトに作成されたUserクラスのユーザオブジェクトが返されてきます。呼び出すことでFirebaseに再通信します。Firebaseがユーザに対してメールを送信してくれます。ここまで成功すれば「登録できました」とユーザに表示する、または完了画面に遷移させるなどをすればいいわけです。動作確認ここまでを実際にアプリを実行して動かしてみると、メールが実際に届きました。リンクを踏むとブラウザに「メールアドレスは確認済みです。新しいアカウントでログインできるようになりました」という味気ない画面が登場します。メールの内容や言語も同じ編集画面で行えます。これだけの実装で上に書いた図のフローを完成させることができました。ネストを減らそう先ほど書いたソースコードは一連の流れをまとめて書いたのでネストが深くて読みづらくなってしまいました。現実的にはメソッドを分けてあげるほうが見通しは良さそうです。「メールで確認したユーザ」と「そうでないユーザ」に分かれます。セキュアのレベル要件によって変わると思います。UserオブジェクトのisEmailVerifiedというフラグプロパティで取得できます。アプリ側でこのフラグを確認して、どのように分岐させるかは考えなければいけません。サインイン「サインイン」は「(既存ユーザとして)ログイン」のことです。多くのサービスでは下図のように認証情報を入力することで会員としての機能が使えるようになると思います。シンプルですね前提まず、以下のようなビューコントローラを作っておきます。}}ストーリーボードには、認証情報を入れるテキストフィールドとサインインボタンのあるレイアウト配置をしてあるものとします。実装サインインボタンが押下されたときの実装は下記のようになります。フローが少ないぶん実装もサインアップよりはシンプルになります。}}エラー処理についてさて、サインアップでもサインインでも起きうるのはエラーです。それはネットワーク起因の問題かもしれないし、Firebase起因かもしれない、または認証情報を打ち間違えたなどのユーザ起因によるものかもしれません。Firebase側で判定されて返してくるエラーもきちんと見ておく必要もあると思います。Firebaseが返すエラーはドキュメントに記載されていて、FirebaseSDKもそのエラーに従ってAuthErrorCodeというエラー定義がされています。どのエラーが返されたかは下記のように取得しておきます。showErrorIfNeeded()に組み込んでみると、このような感じです。ユーザが「久しぶりにログインすることになったけど、認証情報を忘れてしまった」というケースも救ってあげる必要があります。いわゆる「パスワードリセット」の機能ですが、これもFirebaseには備わっています。そのあたりを吸収してくれます。前提まず、以下のようなビューコントローラを作っておきます。}}実装フロー自体は長いですが、アプリでやることは指定のメールアドレスにメールを送るようFirebaseに伝えるだけです。}}sendPasswordReset()メソッドを呼び出せば、よしなにやってくれます。メールの内容やリンク先のカスタマイズは、サインアップのときと同じようにFirebaseのコンソールから行うことができます。サインアウト会員機能にはサインアウト、ログアウトする機能はほしいところです。サインアウトはその名の通りのsignOut()メソッドが用意されています。}}退会ユーザはアプリが提供する会員サービス自体を辞めたいと思うこともあると思います。Firebaseもそこは織り込み済みで、登録したアカウント自体を削除させることもできます。いわゆる「退会機能」ですね。}}Withdrawは日本語にすると「退会」の意味です。退会ボタンを押したときに現在ログイン中のユーザオブジェクトに対してdelete()メソッドで削除させています。アカウント削除なのでこの処理をする前にはダイアログなどでユーザに確認をとる必要があると思います。ユーザFirebaseのAuthenticationコンソールのユーザでは実際に管理しているユーザを見ることができます。photoURLなどでは検索・閲覧はできないようです。Firestore)とユーザを紐付けさせる必要があるようですが、それはまた別の機会でやりたいと思います。最後にFirebaseのAuthenticationの「メールアドレス認証」の一部だけでも一般的な会員機能はこのようにして作成することができます。幅広い機能が備わっているので、触ってみたときにアウトプットしてきたいと思います。694,531iOS開発歴がそこそこ長くなってきました。Swiftが好きなのでSwiftの小ネタ中心にブログを執筆しています。リモート】クラスメソッドの会社説明会を開催しますクラスメソッドでは、AWS・AI・ビッグデータ・モバイルなどの技術職や営業のメンバーとして一緒にお仕事をする仲間を大募集しています。#cmdevio新型コロナウイルスの感染拡大を受け、本イベントを延期させていただくことになりました(開催時期未定)。お申し込みいただいた皆様には大変申し訳ございませんが、何卒ご理解いただけますようよろしくお願いいたします。AWSについてライトに色んな情報交換をしましょう。濱田孝治391re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。CAFEの他、NTTデータとセブンイレブンの取り組みや、サインポスト、Zippinなどの各社と流通・小売業との連携を業界マップに作成してみました。泰雨73皆さん、こんにちは。コンサル部のテウです。2020年もあっという間に2ヶ月が経ちました。今年こそ機械学習に入門しようぜ!!って決心された方もいらっしゃると思います。入門できる方法をご紹介させて頂きたいと思います。本記事の手順通り、ランチタイム等の時間を活かして、手軽に入門してみてください。夏目祐樹410こんにちは、CX事業本部の夏目です。MacのタッチバーのタッチIDが非常に便利なのですが、Terminalでsudoを叩かないと行けないときに使えたらなぁと思ったので、情報を共有します。濱田孝治391re:Invnetの動画検索でもめちゃくちゃ便利ですが、その他ブログやホワイトペーパーやGitHubも横断検索できるので、是非一度使ってみてください。臼田佳祐296ワークフロー自動化OSSのn8nをAWS環境で建てて検証してみました。非常に期待できるサービスです。Fargateの勉強をしています。使ってみたい方は参考にしてください。洋介256SnowflakeがAWSの東京リージョン上で稼働するようになりました。データを日本に置けます。クラスメソッド株式会社が運営するAWS・iOS・HTML5に関する技術情報サイトです。