FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

匿名認証を継続して使い続けるには?

f:id:mbaasdevrel:20180913213909p:plain

IDやパスワード入力などが不要で、その端末だけで利用できるデータを保存したり検索できる匿名認証機能。便利な機能ですが、あくまでも匿名なので認証が切れてしまうとそのデータを扱えなくなってしまいます。

そこで今回は匿名認証を継続する方法について紹介します。JavaScript SDKでの実装例ですが、他のSDKでも利用法は変わりません。

匿名認証を行う

まず最初に匿名認証を行う必要があります。管理画面で設定を有効にします(アプリ設定の中にあります)。

f:id:mbaasdevrel:20180704150159p:plain

有効にした後、例えばJavaScript SDKであれば次のように実行します。

(async () => {
  const ncmb = new NCMB(applicationKey, clientKey);
  const user = await ncmb.User.loginAsAnonymous();
  console.log(user);
})();

そうすると、認証後のユーザ情報は次のようになります。

User {
  authData: {
    anonymous: {
      id: '9a1f267e-a0ee-8dbb-33ae-b1f820ecffc3'
    }
  },
  createDate: '2018-07-04T05:33:58.437Z',
  objectId: 'DxJbYwiGHAUXSr5Q',
  userName: '4FVkDowRfe',
  mailAddress: null,
  mailAddressConfirm: false,
  sessionToken: 'AZYvFoRI7GGwe8LwU9KpIKn9E',
  updateDate: '2018-07-04T05:34:14.076Z'
}

この時の id 9a1f267e-a0ee-8dbb-33ae-b1f820ecffc3 を localStorage やindexedDBなどの恒久的ストレージに残しておきます。

二回目以降の認証

もしセッションが切れている場合には、この id を指定して匿名認証を行います。

(async () => {
  const ncmb = new NCMB(applicationKey, clientKey);
  const user = await ncmb.User.loginAsAnonymous('9a1f267e-a0ee-8dbb-33ae-b1f820ecffc3');
  console.log(user);
})();

そうすると以下のように返ってきます。

User {
  authData: {
    anonymous: {
      id: '9a1f267e-a0ee-8dbb-33ae-b1f820ecffc3'
    }
  },
  createDate: '2018-07-04T05:33:58.437Z',
  objectId: 'DxJbYwiGHAUXSr5Q',
  userName: '4FVkDowRfe',
  mailAddress: null,
  mailAddressConfirm: false,
  sessionToken: 'FSKijfUQU4WGnZTeGYWzjimem',
  updateDate: '2018-07-04T05:34:14.076Z'
}

見ると分かりますが、sessionTokenこそ変わるものの、他のデータは同じです。つまり最初に匿名認証を行ったユーザと同じユーザとして認証できています。

任意のIDを使う

匿名認証で使うIDのフォーマットは [a-f0-9]{8}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{4}\-[a-f0-9]{8} といったUUIDのフォーマットに沿っていれば任意のものを使えます。デフォルトでは自動で生成します。

まとめ

認証のセッションは数日で切れてしまいます。匿名認証ではIDが分からなくなると、データの利用ができなくなりますのでストレージなどに保存するようにしましょう。逆にこのIDさえ保存できていれば、利用者は認証を伴わずに自分だけのデータを保存、検索できるようになりますのでユーザビリティが向上するでしょう。ぜひご利用ください。

会員管理 (JavaScript) : 匿名認証 | ニフクラ mobile backend

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。