Flutter: как безопасно обмениваться данными между двумя отдельными android приложениями? - PullRequest
0 голосов
/ 26 мая 2020

Мне нужно поделиться некоторыми конкретными данными между двумя отдельными приложениями на android, желательно создать какую-то общую папку, к которой могут получить доступ только оба приложения.

Почему? Мне нужна функция единого входа между двумя отдельными приложениями.

До сих пор я аутентифицировал пользователей с помощью токенов JWT, сохраняя их в общих настройках (сохраняя их для поддержки входа) и очищая общие настройки при входе пользователя в систему out (вместе с нажатием api, которое меняет токен).

Теперь у меня есть другое приложение, которое работает с тем же токеном.

Что требуется: вы входите в одно приложение, а другой автоматически выполняет вход. Итак, я планирую сохранить токен на устройстве, к которому, в свою очередь, могут получить доступ оба приложения.

Я знаю, что мне понадобится активный каталог для безопасного единого входа, но я не возражаю, что на данный момент у меня нет 100% безопасности, остается вопрос о том, как обмениваться данными между приложениями.

1 Ответ

1 голос
/ 29 мая 2020

Я просто даю вам представление, не говоря уже об этом ТОЛЬКО работает в Android.

  1. Из вашего 1-го приложения (основного), создайте файл (сейчас я создаю файл .txt) во внешнем хранилище устройства, используя path_provider ,

    Future<void> _createAndWrite() async {
      // Get external directory
      final directory = (await Directory('storage/emulated/0/Sharing Folder').create()).path;
    
      // Create your file
      final file = File('$directory/any_file.txt');
      await file.create();
    
      // Write to the file
      await file.writeAsString('Content to write');
    }
    
  2. Во втором приложении вы можете прочтите содержимое файла примерно так:

    Future<void> _readFile() async {
      // Get external directory
      final directory = (await Directory('storage/emulated/0/Sharing Folder').create()).path;
    
      // Get the file
      final file = File('$directory/any_file.txt');
    
      // Read it
      final content = await file.readAsString();
    }
    

Убедитесь, что в обоих приложениях вы заявили следующее разрешение:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
...