首页 > 解决方案 > 放大认证异常

问题描述

我一直在尝试配置放大,它不断带来身份验证异常。

这是我的主页

class AppWidget extends StatefulWidget {
  const AppWidget({Key? key}) : super(key: key);

  @override
  State<AppWidget> createState() => _AppWidgetState();
}

class _AppWidgetState extends State<AppWidget> {
  @override
  void initState() {
    super.initState();
    _configureAmplify();
  }

  @override
  Widget build(BuildContext context) {
    final appRouter = AppRouter();
    return MultiRepositoryProvider(
      providers: [
        RepositoryProvider(
          create: (context) => AuthRepository(),
        ),
      ],
      child: MultiBlocProvider(
        providers: [
          BlocProvider(
              create: (context) => AuthBloc(context.read<AuthRepository>())
                ..add(const AuthEvent.authCheckRequested())),
        ],
        child: MaterialApp.router(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
          ),
          routerDelegate: appRouter.delegate(),
          routeInformationParser: appRouter.defaultRouteParser(),
        ),
      ),
    );
  }

  Future<void> _configureAmplify() async {
    Amplify.addPlugins([
      AmplifyAuthCognito(),
      AmplifyDataStore(modelProvider: ModelProvider.instance),
      AmplifyAPI(),
      AmplifyStorageS3(),
      AmplifyAnalyticsPinpoint(),
    ]);
    try {
      await Amplify.configure(amplifyconfig);
    } catch (e) {
      //Todo!!: change from log later
      print(
          "Tried to reconfigure Amplify; this can occur when your app restarts on Android.");
    }
  }
}

我的认证集团

class AuthBloc extends Bloc<AuthEvent, AuthState> {
  final AuthRepository _authrepository;
  AuthBloc(this._authrepository) : super(const AuthState.initial()) {
    // on<AuthEvent>((_onEvent);
    on<AuthEvent>((event, emit) {
      event.map(
        authCheckRequested: (e) async {
          final userOption = await _authrepository.user;
          emit(userOption.fold(
            () => const AuthState.unauthenticated(),
            (_) => const AuthState.authenticated(),
          ));
        },
        signedOut: (e) async {
          await _authrepository.logOut();
          emit(const AuthState.unauthenticated());
        },
      );
    });
  }
}

错误:

E/flutter ( 2805): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: AmplifyException(message: Auth plugin has not been added to Amplify, recoverySuggestion: Add Auth plugin to Amplify and call configure before calling Auth related APIs, underlyingException: null)
E/flutter ( 2805): #0      AuthCategory.getCurrentUser
package:amplify_flutter/categories/amplify_auth_category.dart:196
E/flutter ( 2805): #1      AuthRepository.user
package:aws_test/…/infrastructure/auth_repository.dart:10
E/flutter ( 2805): #2      new AuthBloc.<anonymous closure>.<anonymous closure>
package:aws_test/…/auth_bloc/auth_bloc.dart:16
E/flutter ( 2805): #3      new AuthBloc.<anonymous closure>.<anonymous closure>
package:aws_test/…/auth_bloc/auth_bloc.dart:15
E/flutter ( 2805): #4      _$_AuthCheckRequested.map
package:aws_test/…/auth_bloc/auth_bloc.freezed.dart:163
E/flutter ( 2805): #5      new AuthBloc.<anonymous closure>
package:aws_test/…/auth_bloc/auth_bloc.dart:14

注意:忽略他发誓他刚刚看到他的寿司移动的最后一句话。他们很高兴看到他们的第一个树懒。每当他在海滩上看到红旗警告时,他都会抓起冲浪板。他们扔卷心菜,把你的大脑变成情感包袱。三块球形岩石聚集在一个立方体的房间里。一个安静的房子是不错的,直到你被命令在里面呆几个月。

标签: amazon-web-servicesflutterdartaws-amplify

解决方案


看起来您需要向项目添加身份验证服务。这是通过amplify add auth在项目目录中运行 then 来完成的,通过控制台提示,然后运行amplify push​​. https://docs.amplify.aws/lib/auth/getting-started/q/platform/flutter/#summary


推荐阅读