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

如何在React Native的AWS Amplify请求中添加Cognito Authorization头

给React Native中AWS API请求添加Authorization头的方法

没问题,我刚好做过类似的场景,给你一步步说清楚怎么弄:

首先,你需要先获取当前已登录Cognito用户的JWT令牌——因为API Gateway的Cognito用户池授权器就是靠这个令牌来验证身份的。我们可以用AWS Amplify的Auth模块来获取这个令牌:

  1. 先确保你已经在React Native项目中正确配置了Amplify(既然你用了Mobile Hub,应该已经配置好了,但还是提一句),然后导入所需模块:
import { Auth, API } from 'aws-amplify';
  1. 在发起API请求前,获取用户的会话令牌:
    调用Auth.currentSession()方法,它会返回当前登录用户的会话信息,从中提取出idToken或者accessToken(具体用哪个取决于你在API Gateway授权器里的配置,大部分场景下用idToken.jwtToken就可以)。

  2. 修改你的API请求代码,把令牌放到Authorization头里:
    原来的request对象只包含body,现在要加上headers字段,把令牌传进去。

完整的代码示例如下:

// 假设这是你的请求函数
const makeApiRequest = async () => {
  try {
    // 获取当前用户的会话
    const session = await Auth.currentSession();
    // 获取ID Token(如果你的授权器配置用Access Token,就换成session.getAccessToken().getJwtToken())
    const idToken = session.getIdToken().getJwtToken();

    // 构造请求参数,添加Authorization头
    const request = {
      body: { attr: value },
      headers: {
        Authorization: idToken // 关键:把令牌放到Authorization头里
      }
    };

    // 发起API请求
    const response = await API.post(apiName, path, request);
    console.log(response);
  } catch (error) {
    console.error('请求出错:', error);
    // 处理未登录、令牌过期等错误场景
    if (error.name === 'NotAuthorizedException') {
      console.log('用户未登录或令牌已过期,请重新登录');
      // 这里可以添加引导用户登录的逻辑
    }
  }
};

几个需要注意的细节:

  • 如果你在API Gateway的授权器配置中选择使用Access Token,那就要把session.getIdToken()替换成session.getAccessToken();
  • 一定要处理Auth.currentSession()可能抛出的错误,比如用户未登录、令牌过期等情况;
  • 确认你的React Native项目已经正确初始化Amplify,aws-exports.js里的Cognito用户池配置和Mobile Hub项目一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:03:48