安卓端用Google One-Tap的ID Token,能否在AWS Cognito用户池创建用户?
可行,具体实现方式如下
这完全可以实现,和AWS托管UI的用户创建逻辑一致,不需要手动调用用户创建接口,而是通过Cognito的认证流程自动完成用户创建,具体步骤如下:
确认Google ID Token的有效性
确保安卓端通过Google One-Tap获取的ID Token,其aud字段与你在Cognito用户池配置Google身份提供商时填写的Web应用客户端ID一致(Cognito会验证这个字段,确保Token是针对你的应用生成的)。调用Cognito认证接口触发自动用户创建
使用AWS SDK for Android调用Cognito的认证接口,无需提前创建用户:- 设置
AuthFlow为CUSTOM_AUTH(或直接调用InitiateAuth并指定身份提供商参数) - 在
AuthParameters中传入以下核心参数:IDENTITY_PROVIDER:Google(需与你在Cognito中配置的身份提供商名称完全一致)TOKEN: 从Google One-Tap获取的ID TokenUSERNAME: 可填写Google用户的邮箱或ID(Cognito会自动匹配并生成对应用户)
当Cognito验证通过Google ID Token后,如果用户池中不存在该Google账号对应的用户,会自动创建格式为
google_<Google用户ID>的用户,和托管UI登录时的效果完全相同。- 设置
关键注意事项
- 不要手动调用
SignUp接口创建用户,手动创建的用户无法关联到Google身份提供商,无法实现和托管UI一致的第三方登录关联逻辑 - 确保安卓端的AWS SDK已正确配置Cognito用户池ID、客户端ID等核心信息,且权限配置允许执行认证操作
- 不要手动调用
内容的提问来源于stack exchange,提问作者user2694572
相关产品推荐
相关产品推荐

