如何在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
相关产品推荐
相关产品推荐

