Flutter Web中Amplify.API.get调用AdminQueries接口报错求助
解决Flutter Web环境下Amplify AdminQueries调用失败的问题
针对你遇到的iOS模拟器正常、Chrome Web端调用listUsersInGroup时报TypeError: Failed to fetch的问题,以下是几个关键排查方向和解决方法:
检查API Gateway的CORS配置
Web端跨域请求失败是这类问题的高频原因。登录AWS控制台找到目标API Gateway:- 进入
listUsersInGroup对应的GET方法配置页 - 确认CORS设置中:
- 允许的Origin包含你的Web应用域名(本地调试可临时设为
*测试,生产环境需指定具体域名) - 允许的Headers包含
Authorization、Content-Type等Amplify所需头 - 允许的Methods包含
GET
配置完成后务必重新部署API到dev阶段。
- 允许的Origin包含你的Web应用域名(本地调试可临时设为
- 进入
确认Amplify Web端初始化完整性
Web端需要单独引入并添加AmplifyWeb插件,检查你的初始化代码:import 'package:amplify_flutter/amplify_flutter.dart'; import 'package:amplify_api/amplify_api.dart'; import 'package:amplify_auth_cognito/amplify_auth_cognito.dart'; import 'package:amplify_web/amplify_web.dart'; Future<void> configureAmplify() async { try { await Amplify.addPlugins([ AmplifyAuthCognito(), AmplifyApi(), AmplifyWeb(), // Web端必须添加此插件 ]); await Amplify.configure(amplifyconfig); safePrint('Amplify配置成功'); } on Exception catch (e) { safePrint('Amplify配置失败: $e'); } }验证AdminQueries的权限配置
AdminQueries需要调用方具备cognito-idp:ListUsersInGroup的IAM权限:- 检查当前登录用户所属的用户组或附加的IAM策略,确保包含如下语句:
{ "Effect": "Allow", "Action": "cognito-idp:ListUsersInGroup", "Resource": "arn:aws:cognito-idp:ap-southeast-2:你的AWS账号ID:userpool/你的用户池ID" } - 打开Chrome开发者工具的Network标签,查看请求头是否携带有效的
Authorization字段,确认认证信息正常传递。
- 检查当前登录用户所属的用户组或附加的IAM策略,确保包含如下语句:
排查混合内容限制
如果你的Web应用以HTTP方式本地调试(如http://localhost:5000),而API使用HTTPS,浏览器会阻止混合内容:- 可改用HTTPS启动Flutter Web(需生成本地SSL证书):
flutter run -d chrome --web-port=5000 --web-hostname=localhost --web-ssl-cert=cert.pem --web-ssl-key=key.pem - 或临时在Chrome中允许当前站点的不安全内容:点击地址栏锁图标 → 网站设置 → 不安全内容 → 允许
- 可改用HTTPS启动Flutter Web(需生成本地SSL证书):
升级Amplify依赖版本
旧版本Amplify插件可能存在Web端兼容性问题,更新pubspec.yaml中的依赖到最新稳定版:dependencies: amplify_flutter: ^1.10.0 # 替换为最新版本 amplify_api: ^1.10.0 amplify_auth_cognito: ^1.10.0 amplify_web: ^1.10.0执行
flutter pub get完成依赖更新
内容的提问来源于stack exchange,提问作者DBC
相关产品推荐
相关产品推荐

