在flutter应用程序中存储API凭据

问题描述 投票:0回答:1

我在我的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

谢谢。

dart flutter flutter-dependencies
1个回答
5
投票

要存储像凭据这样的敏感信息,您应该使用Android下的Keychain unter iOS和Keystore。

有一个完美的图书馆叫做flutter_secure_storage

以下是如何使用它:

// Create storage
final storage = new FlutterSecureStorage();

// Store password 
await storage.write(key: "password", value: "my-secret-password");

// Read value 
String myPassword = await storage.read(key: "password");

要使用它,请将flutter_secure_storage: 3.2.1+1添加到pubspec.yaml并在终端中运行flutter packages get

这是包和更详细的如何使用它的例子:qazxsw poi

© www.soinside.com 2019 - 2024. All rights reserved.