mBaaSではキーに何かあった時のために再生成することができます。その際、アプリ側に埋め込んだキーを書き換える必要があります。つまり、アプリを再度ビルドして、リリースし直す必要があり、これは非常に大きな手間でしょう。
そこで、キーを外部ファイルとして置いておき、動的に呼び出すようにしてみます。今回はWebブラウザ上での利用法です。
設定をファイルストアに保存する
アプリケーションキー、クライアントキーを記述したファイルをcofing.jsonとしてファイルストアに保存しておきます。ファイルはHTTPS公開しておきます。
{ "applicationKey": "70d...934", "clientKey": "4d0...dff" }
設定ファイルを読み込む処理を作る
次に上記のファイルをネットワーク経由で読み込む処理を作ります。読み込んだ内容はlocalStorageに保存します。
const request = require('superagent'); const getConfig = async () => { const configUrl = 'https://mbaas.api.nifcloud.com/2013-09-01/applications/TTu...5Hk/publicFiles/config.json'; const response = await request.get(configUrl).send(); localStorage.setItem('ncmb', JSON.stringify(response.body)); return response.body; }
NCMBを初期化する
二回目以降の実行では設定内容をlocalStorageに保存していますので、それを使います。初回はネットワーク経由で取得します。
// 既にlocalStorageにあればそれを使う const config = localStorage.getItem('ncmb') ? JSON.parse(localStorage.getItem('ncmb')) : await getConfig(); let ncmb = new NCMB(config.applicationKey, config.clientKey);
テストする
キーが使えるかどうかテストします。使えなければ設定ファイルを取得し直して、そのキーを再設定します。
try { // 使えるかテスト await ncmb.DataStore('Test').fetch(); } catch (e) { // エラー = キーが再生成されている const newConfig = await getConfig(); ncmb.apikey = newConfig.applicationKey; ncmb.clientkey = newConfig.clientKey; await ncmb.DataStore('Test').fetch(); }
試す
実際に試したところです。キーが再生成されていた場合、初回のデータストアのテスト実行がエラーになります。その場合は設定ファイルを取得し直して、キーを設定し直しています。そして二回目のアクセスでは無事、HTTPステータス200で結果が返ってきます。
その次の実行時はlocalStorageからキーを取得しているのでネットワークアクセスはありません。
まとめ
このようにすることでキーの再生成に対して強固になります。アプリ内にキーを記述しないので、コーディングも楽になるでしょう。再生成は滅多に行わないと思いますが、万一の際に備えて外部ファイル化しておくと便利です。