LoginSignup
0
0

More than 1 year has passed since last update.

FlutterでKeychain Sharingを実現する方法

Last updated at Posted at 2022-12-18

Keychain Sharingとは

Keychain Sharingを使用することで、異なるアプリ間で情報を共有することができます。
例えばですが、異なるアプリ間で共通のユーザー名やパスワードを使用したい場合において、アプリAでログインする際にユーザー名やパスワードをKeychainの共有領域に保存させ、アプリBにログインする際にはKeychainに保存されている情報を使用して、ユーザー名やパスワードの入力なしにログインさせる
といったことができるようになります。

注意事項として、チームIDが同じプロビジョニングプロファイルでビルドされたアプリでしか上記は実現できません。
当たり前と言えば当たり前ですが、、、

チームIDはプロビジョニングプロファイルから確認できます。
大体は以下の赤い箇所に記載されていると思います。
スクリーンショット 2022-12-18 17.53.05.jpg

FlutterでKeychain Sharingを実現するには

今回はKeychainに認証情報を保存するために、flutter_secure_storageを使用しました。

具体的なソースコードは以下になります。

  FlutterSecureStorage secureStorage = const FlutterSecureStorage(
    iOptions: IOSOptions(
      groupId: "TeamID.jp.co.hoge.group",
      accountName: "jp.co.hoge.service",
    ),
  );
  • TeamIDにはプロビジョニングプロファイルに記載された、チームIDを記載してください。

  • jp.co.hoge.groupというのは、xcode上で設定したKeychain Groupsです。
    スクリーンショット 2022-12-18 18.34.57.jpg

    • 異なるアプリ間でKeyChain Groupsに同じ値を設定することで、以下のようにKeychain上に共有領域を確保することができます。
      スクリーンショット 2022-12-18 18.26.11.jpg
  • accountName(iOSで言うところのService Name)が必要な場合は設定してください。アプリ間でaccountNameに異なる値を設定している場合、KeyChainの共有領域から値を読み出すことができません。

あとは、お好きなようにsecureStorage.write(key: key, value: value);なり、secureStorage.read(key: key);すれば、KeyChainの共有領域に対して読み書きができるようになります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0