mBaaSには会員管理機能があり、認証を手軽に実装できます。利用は簡単なのですが、実際に使う上ではいくつかの注意点があります。今回はその注意点と実装方法についてUnity SDKを用いて紹介します。
注意点
先に注意すべき内容を書いておきます。
- ログイン中のユーザ(会員)が取れたかといって、セッションが有効かは分からない
- セッションの有効性はmBaaSにアクセスしないと分からない
ということです。この2点を踏まえて実装を紹介します。
現在のログインユーザを取得する
現在ログインしているユーザは NCMBUser.CurrentUser
で取得できます。これが null だった場合には、そもそもログインしていない状態です。
NCMBUser currentUser = NCMBUser.CurrentUser; if (currentUser == null) { // ログインしていない } else { // ログイン中 }
セッションの有効性をチェックする
セッションの有効性チェックは何らかのデータを取得してみることで分かります。最も簡単なのはユーザ自身のデータを取得し直してみることです。
try { await currentUser.FetchTaskAsync(); UnityEngine.Debug.Log ("セッションは有効です"); } catch (NCMBException e) { // セッションが無効 UnityEngine.Debug.Log ("セッションは無効です"); }
セッションが無効だった場合の処理
もしエラーだった(セッションが無効だった)場合には、ログアウト処理と取得したデータの無効化をするといいでしょう。
await NCMBUser.LogOutTaskAsync(); currentUser = null;
全体のコードは次のようになります。
NCMBUser currentUser = NCMBUser.CurrentUser; if (currentUser != null) { // セッションの有効性を確認 try { await currentUser.FetchTaskAsync(); UnityEngine.Debug.Log ("セッションは有効です"); } catch (NCMBException e) { // セッションが無効 UnityEngine.Debug.Log ("セッションは無効です"); await NCMBUser.LogOutTaskAsync(); currentUser = null; } }
こうすることでセッションの無効化が行われて、再度ログイン処理などに繋げられます。
セッションが無効になる原因
セッションが無効になる原因は以下のようになります。
- 別な端末でログインした
- ユーザを管理画面や別端末で削除した
- セッションの有効期限を過ぎた
セッションの有効期限は管理画面で変更できますが、最大7日間になります。
まとめ
セッションの有効性チェックをしないと、ログインしている状態なのにデータの取得や保存ができないという困った状態になってしまいます。認証機能を使っている場合には、最初に忘れずチェックするようにしてください。また、たまたまアプリの利用中にセッションの有効期限が切れてしまうこともあるので、mBaaSへのアクセス時には try / catch を使ってエラーの補足を行うようにしてください。