Amplify Cognito谷歌SSO无姓氏报错的代码层面解决方案咨询
解决方案:通过Cognito Lambda Trigger补全缺失的姓氏属性
核心思路
利用Cognito的Pre Token Generation触发器,在谷歌SSO认证完成后、Cognito同步用户属性前,自动检查并补全缺失的姓氏(family_name)属性,用默认值绕过Cognito的必填校验,无需修改前端代码或Cognito面板设置。
具体实现步骤
创建Pre Token Generation Lambda函数
编写Node.js代码,示例如下:exports.handler = async (event) => { const userAttributes = event.request.userAttributes; // 检查姓氏是否为空或缺失 if (!userAttributes.family_name || userAttributes.family_name.trim() === '') { // 填充默认值,可根据需求改为"N/A"等占位符 event.response.claimsOverrideDetails = { claimsToAddOrOverride: { family_name: '' } }; } return event; };关联Lambda到Cognito用户池
- 进入AWS Cognito控制台,打开目标用户池
- 切换到「触发器」标签页
- 在「Pre Token Generation」下拉列表中选择刚创建的Lambda函数
- 保存配置
验证效果
使用无姓氏信息的谷歌账号发起SSO登录,Lambda会自动补全姓氏属性,Cognito将不再触发必填项错误。
补充说明
- 前端原有代码(
Auth.federatedSignIn调用及OAuth配置)无需修改 - 默认值可根据业务场景调整,只要不为空即可通过Cognito校验
- 触发器运行在AWS服务端,不会影响前端用户登录流程
内容的提问来源于stack exchange,提问作者Atharv Arolkar
相关产品推荐
相关产品推荐

