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

React Native+Expo+AWS Amplify应用突发401 GraphQLError求助

解决React Native + Expo + AWS Amplify GraphQL 401认证错误
  • 检查Cognito会话令牌有效性
    3周后出现401大概率是令牌过期且未自动刷新,执行以下代码确认令牌状态:

    import { Auth } from '@aws-amplify/auth';
    
    const checkSession = async () => {
      try {
        const session = await Auth.currentSession();
        console.log('令牌过期时间:', session.getIdToken().getExpiration());
        // 强制刷新会话
        await Auth.currentAuthenticatedUser({ bypassCache: true });
      } catch (err) {
        console.log('会话无效:', err);
      }
    };
    

    如果会话无效,直接引导用户重新登录。

  • 确认GraphQL API授权配置
    登录AWS Amplify控制台,检查:

    • 目标GraphQL API的授权模式是否已启用AMAZON_COGNITO_USER_POOLS
    • API资源策略是否未被修改,确保允许当前Cognito用户池的用户访问listUsers查询
  • 修正authMode的正确使用方式
    确保authMode参数传递到正确的位置:

    import { API, graphqlOperation } from '@aws-amplify/api';
    import { listUsers } from './graphql/queries';
    
    // 单个查询指定authMode
    const fetchUsers = async () => {
      try {
        const result = await API.graphql({
          query: graphqlOperation(listUsers),
          authMode: 'AMAZON_COGNITO_USER_POOLS'
        });
        console.log('用户列表:', result.data.listUsers.items);
      } catch (err) {
        console.log('查询错误:', err);
      }
    };
    
    // 全局配置默认authMode
    Amplify.configure({
      ...awsExports,
      API: {
        graphql_headers: async () => {
          const session = await Auth.currentSession();
          return {
            Authorization: session.getIdToken().getJwtToken()
          };
        }
      }
    });
    
  • 排查依赖版本兼容性
    检查@aws-amplify/*依赖与当前Expo SDK版本是否兼容,执行更新命令:

    npm install @aws-amplify/core@latest @aws-amplify/auth@latest @aws-amplify/api@latest
    
  • 清除客户端缓存
    Expo客户端可能缓存了过期的认证信息:

    • 在Expo客户端中清除应用缓存
    • 或通过代码强制登出并清除全局缓存:
      await Auth.signOut({ global: true });
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:22:16