mBaaSへアクセスする際にはアプリケーションキーとクライアントキー、二つのキーを使います。これらは漏洩するとデータストアやファイルストアを操作できてしまいます(ACLをきちんと設定しておけば、個人のデータについては問題ありません)。
そこでキーはアプリ内にハードコーディングせず、隠蔽化しておくのがお勧めです。今回はFlutterでキーを隠蔽化する方法を紹介します。
利用するライブラリ
利用するライブラリは flutter_dotenv です。pubspec.yamlに次のように記述します。
dependencies: flutter: sdk: flutter flutter_dotenv: ^2.0.1 # 追記
さらにアセットを追加します。これもpubspec.yamlへの記述です。
flutter: assets: # 追加 - .env # 追加
そして flutter pub get
を実行します。
環境設定ファイルの作成
プロジェクトのルートディレクトリに .env
というファイルを追加します。このファイル名は pubspec.yaml へ記述したものと同じです。このファイルは .gitignore でバージョン管理外のファイルとしておきます。
内容はシンプルなものです。 環境変数名=値
として記述するだけです。
APPLICATION_KEY=1f3...fb2 CLIENT_KEY=cdc...398
コーディング
では利用についてです。まずライブラリを読み込みます。
import 'package:flutter_dotenv/flutter_dotenv.dart';
次に main 関数を次のように書き換えます。
void main() async { await DotEnv().load('.env'); // 追加 runApp(MyApp()); }
後は DotEnv().env
で環境変数を取り出せます。下記はncmb | Dart Packageを初期化する例です。
NCMB ncmb = NCMB(DotEnv().env['APPLICATION_KEY'], DotEnv().env['CLIENT_KEY']);
まとめ
Flutterでプロジェクトを作る際にはflutter_dotenvを使ってキーの隠蔽化を行ってください。他のWeb APIを利用する際も同様です。誤った漏洩などを防いだり、開発環境と本番環境でキーを差し替える際にも使えるでしょう。