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

如何在AWS Amplify v6中获取当前已认证用户的邮箱

获取AWS Amplify当前用户邮箱的解决方法
  • 先检查用户池配置
    确认你的Cognito用户池已将email设为用户属性,并且在App Client的「属性映射」中,把email字段添加到ID Token的Claims里。如果这里没配置,前端任何调用都拿不到邮箱数据。

  • 用getUserAttributes直接获取属性
    这是最直接的方案,Amplify专门提供了获取用户属性的方法,代码示例:

    import { getUserAttributes } from 'aws-amplify/auth';
    
    async function fetchUserEmail() {
      try {
        const userAttributes = await getUserAttributes();
        const emailAttr = userAttributes.find(attr => attr.key === 'email');
        if (emailAttr) {
          console.log('当前用户邮箱:', emailAttr.value);
          return emailAttr.value;
        }
      } catch (err) {
        console.error('获取用户属性出错:', err);
      }
    }
    
  • 修复fetchAuthSession的使用逻辑
    之前没成功大概率是没找对数据位置,邮箱通常存在idToken的payload里,代码示例:

    import { fetchAuthSession } from 'aws-amplify/auth';
    
    async function getEmailFromSession() {
      try {
        const session = await fetchAuthSession();
        if (session.tokens?.idToken) {
          const { email } = session.tokens.idToken.payload;
          console.log('从会话中获取邮箱:', email);
          return email;
        }
      } catch (err) {
        console.error('获取会话信息出错:', err);
      }
    }
    

    要是这里仍拿不到邮箱,回到第一步检查用户池的ID Token Claims配置,确保email被包含在内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:29:53