You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReactNative/Expo应用中AWS Amplify POST请求403错误排查求助

确认授权用户身份及排查403错误的方法

一、确认你是否被视为授权用户

  • 打印完整会话信息验证登录状态
    在代码中添加会话详情打印,确认是否获取到有效认证会话:

    const enterData = async () => {
      try {
        const session = await Auth.currentSession();
        console.log('当前认证会话:', session);
        console.log('ID Token 内容:', session.getIdToken().payload);
        // 后续API请求代码
      } catch (err) {
        console.log('获取会话失败:', err);
      }
    };
    

    查看输出的payload:如果包含cognito:username、未过期的exp(过期时间戳)、与你的Cognito用户池匹配的iss,说明你是已认证用户。

  • 验证Amplify Auth配置正确性
    打开src/aws-exports.js,检查aws_user_pools_id、aws_user_pools_web_client_id是否与AWS控制台中你的Cognito用户池信息完全一致,配置错误会导致认证会话不被API认可。

二、排查403错误的常见原因

  • 移除手动添加的Authorization头
    Amplify的API模块会自动为已登录用户添加Authorization头,手动添加可能导致格式冲突或重复。修改enterData函数,删除自定义headers:

    const enterData = async () => {
      try {
        const result = await API.post("API", "/", {
          body: { dateID: "testing" }
        });
        console.log('请求成功:', result);
      } catch (err) {
        console.log('请求错误:', err);
      }
    };
    
  • 检查REST API的权限配置
    登录AWS控制台,进入API Gateway:

    1. 找到你的REST API,查看目标资源(比如/)的POST方法,确认授权类型是Cognito用户池,且关联的用户池与你的Amplify配置一致。
    2. 检查API集成的Lambda角色(如果是Lambda代理到DynamoDB),确保该角色拥有dynamodb:PutItem权限,否则即使用户认证通过,Lambda也无法写入数据,会返回403。
  • 确认API名称和资源路径正确
    API.post的第一个参数是API的名称,必须与aws-exports.js中aws_cloud_logic_custom数组里的name字段完全匹配;第二个参数是资源路径,要与你在API Gateway中创建的资源路径一致(比如如果创建的是/items,就不能写/)。

  • 检查用户所属用户组(若有配置)
    如果API权限是基于Cognito用户组设置的,需确认你的测试用户是否属于拥有POST权限的用户组,可在Cognito用户池的「用户和组」页面查看用户分组。

内容的提问来源于stack exchange,提问作者benwl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 20:25:52