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.
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:
Map<String, String> allValues = await secureStore.readAll();
await secureStore.delete(key: key);
await secureStore.deleteAll();