0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Flutter1.0でamplifyのAuthを使ってCognito認証しようとしたら `No builder registered for SecureStorageInterface`が発生した時の対処

Last updated at Posted at 2023-04-25

TL;DR;

ガイド通りに設定したのにNo builder registered for SecureStorageInterfaceってエラーが出てよくわかりませんでした。

Authのplugin追加時にストレージのオプションを設定して解決できました。

      AmplifyAuthCognito authPlugin = AmplifyAuthCognito(
        secureStorageFactory: AmplifySecureStorage.factoryFrom(
          webOptions: WebSecureStorageOptions(
            persistenceOption: WebPersistenceOption.inMemory,
          ),
        ),
      );

      await Amplify.addPlugins([
        authPlugin,
      ]);

iOSとAndroidだけのプロジェクトであっても、storageFactoryの指定が必要なので、必要ないwebのオプションだけ指定して追加する必要がある。

はまったこと

Amplifyのガイドには「iOSはxxx, Androidはxxxが利用されます。カスタマイズしたい人はオプションでオーバーライドしてね。」というな書き方がされているので、それに従ってプラグインの追加だけの実装をしたら以下のエラーが発生しました。

CredentialStoreStateMachine | Emitted error: Bad state: No builder registered for SecureStorageInterface

SecureStorageの保存先が定義されていないというような内容

解決した内容

flutterのamplify_auth_cognitoの実装サンプルに丁寧にコメントされてました。
今回のプロダクトはiOSとAndroidだけのビルドだけで、Flutterのデフォルトの実装(ios=keychain, android=EncryptedSharedPreferences)で問題ないので個別の設定は不要なのですが、SecureStorageのファクトリーをなにかしら指定しないと落ちるので、適当にダミーで一番手っ取り早いwebのオプションを指定して回避できました。

  AmplifyAuthCognito authPlugin = AmplifyAuthCognito(
    secureStorageFactory: AmplifySecureStorage.factoryFrom(
      webOptions: WebSecureStorageOptions(
        persistenceOption: WebPersistenceOption.inMemory,
      ),
    ),
  );

  await Amplify.addPlugins([
    authPlugin,
  ]);

Flutterに関してはAmplifyに関することであってもFlutterのドキュメントの方がよく書かれている印象です。
困ったらFlutterのドキュメントを漁りましょう。

参考文献

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?