web-dev-qa-db-ja.com

FlutterアプリケーションでのAPI資格情報の保存

Flutterアプリでgoogleapisサービスを使用していますが、JSON形式の認証情報が必要です。この資格情報をアプリに保存する最良の方法は何ですか?

JSONファイルをアセットフォルダーに保持し、メイン関数で読み取ることはできますか?

または、メイン関数で資格情報をハードコードする必要がありますか?フラッター開発は初めてです。

私のコードは次のようになります

import 'package:googleapis/storage/v1.Dart';
import 'package:googleapis_auth/auth_io.Dart';

final _credentials = new ServiceAccountCredentials.fromJson(r'''
{
  "private_key_id": ...,
  "private_key": ...,
  "client_email": ...,
  "client_id": ...,
  "type": "service_account"
}
''');

const _SCOPES = const [StorageApi.DevstorageReadOnlyScope];

void main() {
  clientViaServiceAccount(_credentials, _SCOPES).then((http_client) {
    var storage = new StorageApi(http_client);
    storage.buckets.list('Dart-on-cloud').then((buckets) {
      print("Received ${buckets.items.length} bucket names:");
      for (var file in buckets.items) {
        print(file.name);
      }
    });
  });
}

次の資格情報を保持する必要がある場所:

{
  "private_key_id": ...,
  "private_key": ...,
  "client_email": ...,
  "client_id": ...,
  "type": "service_account"
}

上記のようなハードコーディングは良い考えではないと思います。

これはうまくいくと思います: https://medium.com/@sokrato/storing-your-secret-keys-in-flutter-c0b9af1c0f69

ありがとう。

4
Unnikrishnan
_import 'package:flutter_secure_storage/flutter_secure_storage.Dart';
/*  
* Example of a secure store as a Mixin 
* Usage: 

import '../mixins/secure_store_mixin.Dart';

MyClass extends StatelessWidget with SecureStoreMixin {

  exampleSet(){
    setSecureStore('jwt', 'jwt-token-data');
  }

  exampleGet(){
     getSecureStore('jwt', (token) { print(token); });
  }
}

*/

class SecureStoreMixin{

  final secureStore = new FlutterSecureStorage();

  void setSecureStore(String key, String data) async {
    await secureStore.write(key: key, value: data);
  }

  void getSecureStore(String key, Function callback) async {
    await secureStore.read(key: key).then(callback);
  }

}
_

注:メソッドを追加して拡張します。

  • すべて取得:Map<String, String> allValues = await secureStore.readAll();
  • 削除:await secureStore.delete(key: key);
  • すべて削除:await secureStore.deleteAll();
0
Mods Vs Rockers