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
ありがとう。
_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();