web-dev-qa-db-fra.com

Stockage des informations d'identification de l'API dans une application Flutter

J'utilise les services googleapis dans mon application flutter qui nécessite des informations d'identification au format JSON. Quelle est la meilleure façon de stocker ces informations d'identification dans mon application?

Puis-je conserver un fichier JSON dans mon dossier d'actifs et le lire dans ma fonction principale?

Ou dois-je coder en dur les informations d'identification dans ma fonction principale? Je suis nouveau dans le développement flottant.

Mon code ressemble à ce qui suit

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);
      }
    });
  });
}

Où dois-je conserver les informations d'identification suivantes:

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

Je ne pense pas que le codage en dur comme ci-dessus soit une bonne idée.

Je pense que cela devrait fonctionner: https://medium.com/@sokrato/storing-your-secret-keys-in-flutter-c0b9af1c0f69

Merci.

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);
  }

}

Remarque: étendez en ajoutant plus de méthodes:

  • obtenir tout: Map<String, String> allValues = await secureStore.readAll();
  • supprimer: await secureStore.delete(key: key);
  • supprimer tout: await secureStore.deleteAll();
0
Mods Vs Rockers